JVM调优

内存100%

一、登入服务器用 top -c 命令查看找到cpu占用率达到100%的进程

假如:进程ID为9720的进程CPU占用率超过100%。

二、top命令加上 -H -b 两个选项:-H 可以查看由某个进程启动的所有线程,-b 选项指定以批处理模式输出结果:查询9072进程的线程

命令:$top -Hbp 9702

对上面的命令进行优化,只查询超过50%的命令

top -Hbp 9702 | awk '/java/ && $9>50'

假如:线程ID为10007的线程CPU占用率为100.5%,它就是罪魁祸首

第二招,用jstack 命令dump出线程栈信息,可以直接定位到出问题的代码段。这里也分两步。第一步把上面的线程ID 10007 转化为十六进制:

$printf"%x\n"10007

2717  10007转成16进制就是2717

第二步使用命令 jstack $pid | grep “线程id” 把信息打印出来:

$ jstack 9702 | grep '2717' -A 30

找到错误信息,解决

思路:

找出CPU占用率高的进程

找出问题进程内CPU占用率高的线程

通过线程栈信息找出该线程当时在运行的问题代码段

实施要点:

top -Hbp ‘pid’ 定位问题线程

jstack ‘pid’ | grep ‘thread_id’ 找出问题代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容