日期:2014-05-16  浏览次数:20776 次

linux查看某个进程CPU消耗较高的具体线程或程序的方法

目前我们的监控,可以发现消耗较高CPU的进程(阀值为3CPU),通过监控我们可以找到消耗较高CPU的进程号;

通过进程号pid,我们在linux上可以通过top –H –p <pid>命令,显示该进程中每个线程的CPU资源消耗情况。

?

然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了。

?

另:

使用jrcmd命令也可以进行threadump和进程执行线程情况的查看,但该命令为jrockit 5.0 新带的命令,在wls81用户下,我们没有执行权限,但可以联系中间件帮忙执行。

1. 进入到jrockit/bin目录下
2.
./jrcmd 回车,会看到当前所有在执行中的java进程的PID

3.
./jrcmd [PID] help 回车,会看到指定java进程支持的操作

4.
./jrcmd [PID] print_threads > xxxFile,可以把当前java进程中的所有线程堆栈轨迹打印到指定文件中

?

?