测者的性能测试手册:诊断优化找出消耗CPU性能的内鬼

举报
SUNSKY 发表于 2019/10/13 11:40:28 2019/10/13
【摘要】 每次提起性能测试,都是开始于脚本、压力,然后各种监控,最后的最后就是分析。每次到了最后一个环境,所有大牛都说是一个很复杂的过程一两句话说不清楚。让人陷入了无尽的遐想。今天,测试就告诉你如何找到Java消耗CPU的进程是怎么被找到的。

每次提起性能测试,都是开始于脚本、压力,然后各种监控,最后的最后就是分析。每次到了最后一个环境,所有大牛都说是一个很复杂的过程一两句话说不清楚。让人陷入了无尽的遐想~~~~~。

今天,测试就告诉你如何找到Java消耗CPU的进程是怎么被找到的。

传统的手段

当遇见CPU性能飙升到接近100的时候,首先需要进入对应的服务器,然后通过如下一连串的动作找到最耗资源的罪魁祸首。

top发现最好是的进程

在shell界面中,输入top,找到最消耗CPU的那个Java进程。记录下PID号码。

然后通过:

1.0.png

命令查看对应PID进程下的线程,找到最耗资源的线程的PID。将其通过shell转成十六进制:

1.1.png

应用jstack针对上面耗时的线程进行分析

1.2.png

然后打开xxx.tmp文件,搜索PID(十六进制)号码,下面的堆栈就是这个线程打出来的。排查问题就可以从这些堆栈信息开整找到问题。

一个一劳永逸的工具

show-busy-java-threads用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。

GitHub地址:https://github.com/oldratlee/useful-scripts

在服务器端,克隆项目: git clone git://github.com/oldratlee/useful-scripts.git

1.3.png

然后就可以看到了show-busy-jaa-threads工具了。其中,该Github仓库有一个release发布分支,里面包含的都是功能稳定的脚本,建议使用的时候切换到该分支。方法如下:

1.4.png

1.5.png

1.6.png

1.7.png

其实优化是性能测试的根本目标,找到问题后分析问题才是关键,通过各种手段找到更详细的问题,找到更多的数据和RD一起分析。

本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=Ncedc2f7e-b7ec-428d-a13c-f78b11fd0f4b


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。