1.故障现象
PM*系统和GI*系统的weblogic后台日志频繁提示错误信息,基本在5秒一次:
此问题的出现是在PM*系统*月17日进行检修重启weblogic后,应用程序后台开始频繁报错。局方反映此问题出现时,健康检查策略为*月15日配置,当时重启weblogic后并无错误,但*月17日重启weblogic后出现此问题。
2.故障分析
2.1server日志分析
根据局方发过来的启动日志的信息,可得出,出现故障的三套系统分别在三个不同的物理机上,使用的版本都是WebLogicServer9.2MP3。
故障发生在*月17号,发现重启weblogicserver后,日志中频繁的有大量的字符越界异常java.lang.ArrayIndexOutOfBoundsException:overflowdetected,如图所示:
产生这种问题一般是应用端webservice,建立http连接时,对象流超过http规范引起的错误,可以定义错误是代码层面引起的越界异常。
2.2access日志分析
根据局方提供的access.log的日志,发现日志中出现大量的400错误。统计已给的PMS系统的access.log日志,出现400(客户端请求有语法错误,不能被服务器所理解)556次。
统计已给的GIS系统的access.log日志,出现400(客户端请求有语法错误,不能被服务器所理解)7448次。
http状态码400指的是BADREQUEST,可见可能是http400的请求发生字符越界导致出现该问题的。但由于客户给的日志时间是9月5日的不是8月17日当时的问题日志,不敢肯定是此原因导致的,需要进一步探查。
2.3WebLogicbug探查
由于同时出现在三台不同物理机上,且weblogic版本都是mp9.2.3.0,怀疑此问题的出现是由于weblogic的bug引起的。查证oracle的metalink官方描述。
可见关于次weblogicbug相关问题weblogic在9版本以后就已经解决了,可见此次越界异常不是weblogic版本bug引起的。
详见:
3.故障结论
根据对server日志、access日志以及对weblogic版本bug探查,发现导致越界异常的原因是应用端代码层面的问题引起的,并非是weblogic版本bug。
4.故障建议
根据分析,故建议:
">
">1.收集分析8.17日的access日志,查看是否故障发生点是否有大量的http400错误,若有,则需要查探是那个http连接导致的问题(这就需要提供heapdump来分析堆栈了);若没有400错误,则需要对照server产生越界异常点,找到httpget点,定位到是哪个jsp或者文件。
">
">
">2.由于F5健康检查机制是发送一个CheckState.jsp来监控的,并不能排除不是F5的httprequest引起的越界异常,故,建议停关此测试来进行排除。