linux性能测试被测系统CPU过高分析方法

cpu高的分析方法


1、通过top命令查看哪个进程耗cpu比较高

3、使用命令:PS aux | grep Java 查找占用率最高的进行ID:26348

其实在使用top 命令的时候就能查出,资源占用率最高的进程为:Java ,26348


4、查看程序中占用资源最大的线程ID:top -H -p 26348  得到Pid=26403 查找到最占用CPU的线程

5、将PID=26403转换成16进制:printf“%x\n” 26403,也可以使用其他外部的装换方式 得到线程的ID Tid=6723

6、使用命令 jstack + (3)中进程 | grep + tid  【-C=线程前后行数,-A =线程后行数 ,-B=线程之前行数】 +数字

jstack 26348 | grep 6723 -C 10表示:查询程序26348中线程16进制为6723的进程,并显示前后20的代码.

到此分析完毕,发现现场locked 和wait没有死锁。如果发现下图情况

Thead-1持有<0x00000000e05bff68>对象A的锁,等待锁定 <0x00000000e05bff58>对象B,而此时对象B已经被Thread-0锁定;Thread-0持有对象B的锁,等待锁定对象A,造成死锁!


总结下排查CPU故障的方法和技巧有哪些:

1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。

2、PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。

3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。

你可能感兴趣的:(linux性能测试被测系统CPU过高分析方法)