1、问题描述
运维同事反馈说运营系统weblogic服务进程异常退出,最后导致HA自动切换,切换过程失败导致文件系统无法挂起,weblogic和DB无法正常启动。
2、故障分析
中间件工程师在故障时间点:2017-01-10 17:26分左右,巡检了三套domain环境,最终在rpsdomain域下面的Adminserver.log日志中找到了服务被异常退出的信息,Adminserver无法正常启动,调用<BEA-000388> <JVM called WLS shutdown hook的原因,最终weblogic进程启动不来,于是HA的进程会调用weblogic自检脚本发现服务无法正常启动后,会自动切换HA到备机器。
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Notice> <WebLogicServer> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408882> <BEA-000388> <JVM called WLS shutdown hook. The server will force shutdown now>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Alert> <WebLogicServer> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408883> <BEA-000396> <Server shutdown has been requested by <WLS Kernel>>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Notice> <WebLogicServer> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408885> <BEA-000365> <Server state changed to FORCE_SUSPENDING>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Info> <Diagnostics> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408922> <BEA-320002> <The Diagnostics subsystem is stopping on Server AdminServer.>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Info> <WebService> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408931> <BEA-220028> <Web Service reliable agents are suspended.>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Info> <WebService> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408932> <BEA-220029> <Web Service reliable agents are shut down.>
####<2017-1-10 下午 05 时 26 分 48 秒 CST> <Info> <SAFService> <njycxk1> <AdminServer> <Thread-1> <<WLS Kernel>> <> <> <1484040408933> <BEA-281004> <SAF Service has been suspended.>
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)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2732931/,如需转载,请注明出处,否则将追究法律责任。