linux查看线程占用cpu

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux查看线程占用cpu相关的知识,希望对你有一定的参考价值。

参考技术A top命令是最方便的,想看CPU列的话直接按字母 c 就会以cpu的使用高低来排列。 其实就每一列的第一个字母,如果想按cpu排列就按c ,按内存排列就按m。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND top [-] [d delay] [q] [c] [s] [S] [i] d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 S 指定累计模式。 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 i 使top不显示任何闲置或者僵死进程。 c 显示整个命令行而不只是显示命令名但是无法显示每个线程的 cpu 利用率情况, 这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应。 可以用下面的命令将 cpu 占用率高的线程找出来: 这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。

linux下查找java进程占用CPU过高原因

linux下查找java进程占用CPU过高原因

1. 查找进程

top查看进程占用资源情况

明显看出java的两个进程22714,12406占用过高cpu.

 

2.查找线程

使用top -H -p <pid>查看线程占用情况

 

3.查找java的堆栈信息

将线程id转换成十六进制

#printf %x 15664

#3d30

 

然后再使用jstack查询线程的堆栈信息

语法:jstack <pid> | grep -a 线程id(十六进制)

 

jstack <pid> | grep -a 3d30

 

这样就找出了有问题的代码了。

 

剩下的就是分析原因和修改代码了。


本文出自 “32氪” 博客,请务必保留此出处http://10672221.blog.51cto.com/10662221/1983809

以上是关于linux查看线程占用cpu的主要内容,如果未能解决你的问题,请参考以下文章

linux查看线程占用cpu

LINUX系统下查看JAVA的哪个线程占用CPU高

LINUX系统下查看JAVA的哪个线程占用CPU高

Mac 卸载SSR后,仍然有privoxy线程占用1087端口的问题

linux查看java进程cpu占用过高

linux 分析进程占用CPU过高