Weblogic无法创建域报段错误排查过程记录
在虚机上用普通用户新建weblogic域,之前都是使用weblogic目录下自带的config.sh创建域,但是这次执行时突然报段错误。
刚开始以为是内存问题,毕竟weblogic占用内存也是蛮大的,free -m显示还剩3G内存,按道理来说应该已经够用的,再加上还有buffers和cached(按我理解这两个也能算是可用内存,系统在资源紧张的情况下会自动回收buffers和cached,也可手动回收),但buffers和cached的释放也可能引起短期磁盘IO暴涨等问题,故没有直接手动释放。整体看,内存方面没有大问题。既然不是内存问题,那可能就是java本身出问题。发现查看java -version都不行。但该用户实际上已有weblogic程序在跑,服务也是正常的。所以就发生了奇怪的现象,JAVA本身出问题,但是用到该JAVA的weblogic项目运行仍正常。
按照以往的习惯,在这里我就会直接建议重新安装JAVA。但是忽然间就很好奇,如果JAVA本身有问题的话,能否跟踪下执行java时具体发生了什么事。于是使用strace命令进行跟踪系统调用
我们看下strace java会发生什么。下图可以看到缺少很多文件,但其他正常机器上执行strace java也会提示这些错误。所以应该也不是这个问题
strace java下拉到最下面,报错如下,并不能看出具体是什么原因
刚好这台机器上还有另一个用户下的不同版本的jdk可以正常使用。将可以正常使用的java命令路径复制到weblogic用户下执行,报Insufficient space,即空间不足。一看,发现磁盘空间满了
清理磁盘后,即可正常创建weblogic域。问题解决
这个问题花了一天去排查,一直在查是什么导致段错误,哪知道是磁盘空间不足导致,真是把自己坑了。
总的来说,自己有两个方面没做好。一个是没有形成固定的故障排查思路,觉得哪方面可能有问题就直接从哪方面入手,容易导致忽略一些很基础的问题。建议按照物理层面-》系统层面-》应用层面顺序依次排查。另一个则是监控没有做好,像这些资源告竭,没有及时通知到对应人员处理,包括一些旧日志没有做到定期自动清理。