Java知识收集Java学习笔记Java实战技术

简露一手-简单处理大型系统应用服务器高CPU故障。

2016-07-30  本文已影响176人  georgekaren

复杂的故事简单说,复杂的问题简单做,您好,这里是简露一手,欢迎浏览。

描述:16-7月,一通讯大型系统月度版本发布后,两台接口服务器接口服务时好时坏,导致外系统卡单。简述顺序:定位-->分析-->处理。

定位


一看数据库、二看应用服务器

数据库

     数据库无锁,会话200[比平常低]。

应用服务器

     CPU 98%,另发现除两台接口服务器外发过版本的服务器均高CPU。Linux使用top命令,Aix使用topas命令观察CPU情况。

分析


取javacore文件比对

     STEP.1 .  在CPU异常的机器取javacore文件,使用命令kill -3 [进程号]生成javacore文件,生成3~5个。

      STEP.2 . 找一台CPU正常应用部署差不多的机器取javacore文件,使用命令kill -3 [进程号]生成javacore文件,生成3~5个[或取异常机器升级前的javacore文件]。

      STEP.3 . 打开jca工具,用jca打开javacore文件

Jca工具下载

jca

JavaCore比对

比对

处理


查找来源,修复问题

      STEP.1 . 下载应用所有的jar和class,打开eclipse,创建一个java项目,设置java build path,引入下载下来的jar和class。

设置path

      STEP.2 . 按Ctrl +Shift+T,输入嫌疑的类,找到出处进行判断

查找嫌疑类

      STEP.3. 在JDK和webservices-rt.jar里面同时存在这个嫌疑类,初步判断引入新jar后导致在服务器代码引用了webservices-rt.jar里面的XMLDocumentScannerImpl,而webservices-rt.jar里面该类性能极差。尝试在服务器上删除webservice-rt.jar后重启应用CPU恢复正常,验证应用正常,问题解决。

总结:两方面,一是对版本发布前后应用服务器的性能指标需进行观察比对;二是程序开发在第三方jar引入上需要考虑jar的性能以及本地和应用服务器中间件差异并进行适当测试。

上一篇下一篇

猜你喜欢

热点阅读