1.XXX的YYY系统健康分析 1.1 系统环境1.2 运行状态分析a.操作系统运行情况:
针对6台服务器,执行“vmstat”和“topas”命令检测主机性能也没有发现资源利用的不合理现象(CPU都比较空闲,内存硬盘也都比较充足)。
b.WebLogic系统运行情况:
从Admin Console的性能监控模块,各个Server的运行情况都比较健康,尝试执行Full GC之后各Server的JVM堆内存都基本能全部回收,不存在内存泄露。另外执行请求序列,也没有出现排队现象,持续观察了10分钟各Server吞吐量数值变化也很正常。 系统中没有执行时间超时的线程,处于Actuve线程的数量不大,观察JDBC链接池,能获得链接,性能较好。
c.各WebLogic系统产生的日志分析:
通过系统的日志分析WebLogic服务器及应用程序出现的错误,找到可能影响系统性能的服务器和应用的地方,举例如下:
1.已经对用户进行响应
如上异常,为什么对用户的response已经提交给用户了,就是怀疑代码中某些地方在过滤器过滤之前已经显示的提交或者关闭了对用户的响应的outputstream.有时候在过滤器中要做后续的一些处理,这时候filter中出现异常,有可能导致数据库连接不释放及一些后续的处理得不到执行。
2.线程一直处于stuck状态
这句表明线程23执行时间超过600秒设定的时间。检查这个请求是否会导致线程执行超时,是否是长时间的处理。当前系统状态是否正常,是否是CPU,内存等资源不足导致的线程执行缓慢。
重要的一点要查看线程32是否变成unstuck状态。否则就有可能出现线程死锁现象。
3.数据库连接问题
当出现此问题时,一般系统都执行缓慢。检查是否ping通数据库,是否有权限,也可以请数据库工程师查看数据库是否运行正常,检查dns服务器或本地dns映射是否正常,域名dbnew2_vip能否解析以及操作系统的tco参数设
置。
4.检查WebLogic记录的Error级别的日志,找到可能影响系统运行及功能的问题。
5.class文件找不到
6.邮件服务器异常
检查邮件服务器是否有问题,IP是否冲突,网络连接是否正常,以免影响应用的功能。
7.是否是算法的bug导致的OutOfMemoryError
应该查看com.sun.imageio.plugins.jpeg.JPEGImageWriter是否存在bug,处理大图片时,是否会导致OutOfMemoryError,通过查看他并不是导致系统OutOfMemoryError的罪魁祸首,因为通过其他日志发现此时系统及OutOfMemoryError了,所以再给一个对象分配内存是也出现OutOfMemoryError的异常。
8.程序的一般常见的异常
应该在程序中避免这类异常发生。
3.结论及解决方案
系统偶尔出现OutOfMemoryError不是因程序造成的,经上次对WebLogic和操作系统进行优化后,系统出现OutOfMemoryError次数大大减少,从日志上看,只有应用的版本更新才会偶尔导致OutOfMemoryError。
建议:下次更新版本时,应该先在WebLogic控制台停止应用,然后更新版本,以免影响应用。