云计算百科
云计算领域专业知识百科平台

[已解决]服务器CPU突然飙高98%----Java程序OOM问题 (2024.9.5)

目录

  • 问题描述
  • 问题排查
  • 问题解决
  • 参考资料

问题描述

业主单位服务器自8月29日晚上21:00起CPU突然飙高至98%,内存爆满,一直到9月5日:

在这里插入图片描述


问题排查

①执行 top 命令查看Java进程PID

top

在这里插入图片描述

②执行top -Hp PID 命令查看具体的线程情况

top -Hp 3058

输入上述命令会显示进程 ID 为 3058 的进程及其所有子进程的资源使用情况,按占用cpu使用率倒序显示

在这里插入图片描述 上述占用CPU最高的前十线程如下:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
47496 root 20 0 18.6g 10.7g 15376 R 61.9 68.6 406:54.77 Thread-240
10017 root 20 0 18.6g 10.7g 15376 R 49.3 68.6 293:56.47 Thread-246
10391 root 20 0 18.6g 10.7g 15376 R 48.0 68.6 293:37.96 Thread-249
10141 root 20 0 18.6g 10.7g 15376 R 46.0 68.6 293:45.48 Thread-247
10259 root 20 0 18.6g 10.7g 15376 R 44.7 68.6 293:57.29 Thread-248
9965 root 20 0 18.6g 10.7g 15376 R 42.1 68.6 294:10.26 Thread-245
3060 root 20 0 18.6g 10.7g 15376 S 16.2 68.6 103:36.83 GC task thread#
3061 root 20 0 18.6g 10.7g 15376 S 15.9 68.6 103:36.20 GC task thread#
3063 root 20 0 18.6g 10.7g 15376 S 15.9 68.6 103:33.17 GC task thread#
3062 root 20 0 18.6g 10.7g 15376 S 15.6 68.6 103:38.85 GC task thread#
3064 root 20 0 18.6g 10.7g 15376 S 4.3 68.6 32:01.71 VM Thread

③将线程的pid转为16进制

printf '0x%x\\n' PID

在这里插入图片描述 在这里插入图片描述

④使用jvm工具jstack打印该进程的堆栈信息

jstack 47496 | grep -A 50 0xb988

But 报错了

在这里插入图片描述

47496: Unable to open socket file /proc/47496/root/tmp/.java_pid47496: target process 47496 doesn't respond within 10500ms or HotSpot VM not loaded

查阅相关资料

在这里插入图片描述

注意:发现本地执行命令的用户和Java应用所属的用户均一致,jstack后面的pid与16进制的数也是一致的,因为是直接复制过去的,若无法解决,可直接执行第⑤步

⑤执行jstack命令抓取Java线程的堆栈信息

jstack 3058 > /opt/xxxxx/thread_dump.txt

上述命令会将进程 ID 为 3058 的 Java 应用程序生成一个线程堆栈转储(thread dump),并将输出重定向到 /opt/xxxxx/thread_dump.txt 文件中

在这里插入图片描述

⑥抓取thread_dump.txt文件至本地分析,以子线程Thread-240分析【0xb988】

在这里插入图片描述

⑦使用反编译工具JD-GUI查看对应class文件

在这里插入图片描述 官方下载链接:http://java-decompiler.github.io/

在这里插入图片描述

成功定位到问题,进行相关代码修改后打包部署!!!


问题解决

近3日服务器运行状况如下:

在这里插入图片描述 可以看到CPU使用率基本稳定在10%,解决Java程序OOM 成功!!!


参考资料

  • java应用cpu飙升(超过100%)故障排查步骤
  • 重点问题!CPU利用率过高排查思路|原创
赞(0)
未经允许不得转载:网硕互联帮助中心 » [已解决]服务器CPU突然飙高98%----Java程序OOM问题 (2024.9.5)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!