性能测试全栈笔记:56.Java线程监控-2(线程的几种表现形式)
本期专题:性能测试全栈笔记:56.Java线程监控-2(例子实战)
过程:通过一个例子来展示刚才的两个工具使用
例子:thread-test.jar是一个jar包,通过jar包模拟线程的几种表现形式,附件在最下方
命令:java -jar thread-test.jar 1
(1代表runnable)
观察jvm的cpu和内存变化:
也可以用前面学过的命令进行对比:dstat -tcmnd --disk-util
正式排查:
- 查看jar包程序进程号:
ps -ef | grep java
- 使用命令:
jstack 6246
(注意:不一定一次能成功,尽量使用:jstack -l pid > pid.log
,多拍几次快照进行分析)
- 重新开一个窗口,根据进程号找线程,看哪个(持续)占用高:
- 6256线程持续占用较高,换算成16进制:在线进制转换
- 在jstack结果中找到1870
- 目的:找到消耗较高的线程信息,发给开发调试问题(有能力者可配合开发解决)
以下内容请参考上述操作:
java -jar thread-test.jar 2
(2代表waitting)
java -jar thread-test.jar 3
(3代表timedwaitting)
java -jar thread-test.jar 4
(4代表blocked)