JavaLinux服务器CPU100%原因查找

在开发过程中我们经常遇到由于代码问题导致服务器反应缓慢,服务器CPU100%的问题,跟着网上的处理步骤,自己总结一下,方便以后查找使用

1. 查询CPU占用率最高的进程

每个至少拥有一个进程,我们首先要确定异常的占用是哪个程序,哪个进程引起来。

命令

  • top -c 展示CPU占用率列表
  • 输入大写P按占用率降序排列
    JavaLinux服务器CPU100%原因查找_第1张图片
    image.png

可以看出来占用率最大的PID是652

2. 查询占用率最大的线程

Java代码运行的承载体是线程,找到线程离真相更近一步

命令

  • top -Hp 652 展示进程的线程列表
  • 输入大写P排序找出最大的
    JavaLinux服务器CPU100%原因查找_第2张图片
    image.png

可以得知在进程652中,占用CPU最大的是线程940

3.找出线程在做什么

1)首先将线程PID转为16位,因为在计算机的堆栈中是16位显示的

命令

  • printf "%x\n" 940
    image.png

2) 找出线程的堆栈

命令

  • `jstack 652 | grep "3ac"
    由于是jdk下的命令可能出现以下俩个常见的情况
A. Operation not permitted

使用jstack的命令的用户必须是启动线程的用户,可以在图1的user看出来,
如果使用jstack无如何输出也切换到该用户

B.jstack: command not found

jstack未加入环境变量,可以cdjdkbin下或者加入环境变量

image.png

你可能感兴趣的:(JavaLinux服务器CPU100%原因查找)