在开发过程中我们经常遇到由于代码问题导致服务器反应缓慢,服务器CPU100%的问题,跟着网上的处理步骤,自己总结一下,方便以后查找使用
#1. 查询CPU占用率最高的进程 每个至少拥有一个进程,我们首先要确定异常的占用是哪个程序,哪个进程引起来。
命令
top -c展示CPU占用率列表- 输入大写
P按占用率降序排列
可以看出来占用率最大的PID是
652
2. 查询占用率最大的线程
Java代码运行的承载体是线程,找到线程离真相更近一步
命令
top -Hp 652展示进程的线程列表- 输入大写
P排序找出最大的
可以得知在进程
652中,占用CPU最大的是线程940
3.找出线程在做什么
1)首先将线程PID转为16位,因为在计算机的堆栈中是16位显示的
命令
printf "%x\n" 940
2) 找出线程的堆栈
命令
- `jstack 652 | grep "3ac" 由于是jdk下的命令可能出现以下俩个常见的情况
A. Operation not permitted
使用
jstack的命令的用户必须是启动线程的用户,可以在图1的user看出来, 如果使用jstack无如何输出也切换到该用户
B.jstack: command not found
jstack未加入环境变量,可以cd到jdk的bin下或者加入环境变量
