1、问题描述
运维同事反馈说运营系统weblogic服务进程异常退出,最后导致HA自动切换,切换过程失败导致文件系统无法挂起,weblogic和DB无法正常启动。
2、故障分析
中间件工程师在故障时间点:2017-01-10 17:26分左右,巡检了三套domain环境,最终在rpsdomain域下面的Adminserver.log日志中找到了服务被异常退出的信息,Adminserver无法正常启动,调用
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
####<2017-1-10
下午
05
时
26
分
48
秒
CST>
3、故障原因
本身weblogic不会自己停止,它是收到停止的信号才自己关闭的。通常情况下,产生JVM called WLS shutdown hook的原因是应用的代码中调用了System.exit()方法,触发了weblogic停止。导致weblogic服务启动失败,最终导致HA切换到备机失败。其实WebLogic中没有任何代码会调用System.exit()方法,建议检查应用程序代码,以及引用的第三方类库中是否有可能调用到System.exit()方法。关于JVM called WLS shutdown hook的原因是偶发性的产生,定不会时刻调用。
4、故障解决
1、需要开发确认应用程序和第三方类库是否引用了System.exit()方法,如果有引用,建议去掉此方法。如果开发也不知道,建议开启weblogic的trace跟踪,但trace一开启会刷很多日志出来会影响磁盘IO读写。
2、ORACLE官方也提供了规避方法那就是在weblogic中加上-Xrs参数,可以避免这个问题
5、参考资料
Error: "BEA-000388 JVM called WLS shutdown hook. The server will force shutdown now" when BI_Server1 Shuts Down. (文档 ID 1321815.1)
BEA-000388: JVM called WLS shutdown hook. The server will force shutdown now. (文档 ID 1626472.1)