您的位置:首页 > 其它

cpu过高排查

2016-11-19 10:26 281 查看
线上服务器遇到某几台cpu占用过高的情况,一般会有这几个原因:

- 线上服务器负载不均,导致cpu占用不同;

- IO操作执行频繁,cpu一直等待;

- 程序中出现死循环,线程一直运行;

前两个可以通过查看监控排查,每台服务器的负载都是正常,qps相差不大,只有cpu相差较大,故排查第三种情况。

1.

top之后发现cpu占到30%左右
找到java pid



2.

ps -mp 229148 -o THREAD,tid,time

首先显示线程列表,找到占用cpu过高的线程:



3.

将需要的线程ID转换为16进制格式

$printf "%x\n" 231486

3883e

4.

打印线程堆栈,可以看到循环体所在线程一直处于runnable状态。

$jstack 229148 |grep 3883e -A 30

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: