CPU100%那么一定有线程在占用系统资源, 找出哪个进程cpu高(top),该进程中的哪个线程cpu高(top -Hp) , 导出该线程的堆栈 (jstack) , 查找哪个方法(栈帧)消耗时间 (jstack) 工作线程占比高 | 垃圾回收线程占比高 。
(1)通过top找到占用率高的进程:top
(2)通过top -Hp pid找到占用CPU高的线程ID:top -Hp pid
(3)把十进制的线程TID转化为十六进制TID:printf '%x\n' TID
(4)通过命令jstack 找到有问题的代码:jstack pid | grep 十六进制TID -A 30
或者执行
jstack -l pid > stack.log //将进程pid的堆栈信息打印存储到stack.log文件中去分析
本文介绍了如何通过Linux命令行工具来诊断和定位CPU使用率过高的问题。首先,使用`top`命令找出占用CPU资源最多的进程,接着利用`top -Hp`进一步确定具体线程。然后,将线程ID转换为十六进制,并用`jstack`获取线程堆栈信息,分析可能导致高CPU使用率的方法。通过这些步骤,可以有效地排查系统性能瓶颈。
1162

被折叠的 条评论
为什么被折叠?



