美文网首页Java知识收集Java学习笔记Java实战技术
简露一手-简单处理大型系统应用服务器高CPU故障。

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

作者: georgekaren | 来源:发表于2016-07-30 18:07 被阅读176次

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

    描述: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的性能以及本地和应用服务器中间件差异并进行适当测试。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/vdaldttx.html