当前位置: 首页 > news >正文

[已解决]服务器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利用率过高排查思路|原创

相关文章:

  • C++高阶
  • 哈希--哈希桶
  • wordpress主题开发框架(灵狐框架),开发文档使用教程
  • Docker 搭建 PlantUML 服务:高效生成 UML 图的最佳实践
  • 算法-动态规划二
  • Day38 | 1365. 有多少小于当前数字的数字、941. 有效的山脉数组、1207. 独一无二的出现次数、283. 移动零、189. 轮转数组
  • shell脚本一键安装docker+docker-compose,支持x86_64、arm64双架构
  • 桑福德·韦尔策划美国捷运公司收购南美银行案例分析
  • 数组子序列比较的SIMD优化
  • 字典树与01trie
  • 数值分析作业插值法2
  • CD18.【C++ Dev】类和对象(9)(声明和定义分离的写法以及代码复用)
  • php webshell免杀
  • Hive问题记录(1)
  • SingleMod
  • inline 配置全局参数变量
  • 深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构
  • 驱动编写-DS18B20温度传感器
  • 远场分量(平面波角谱)与倏逝波
  • 搜索旋转排序数组
  • php做网站首页/百度数字人内部运营心法曝光
  • 做网站赚50万/北京百度推广客服电话多少
  • 论述网站推广的方法与技巧/宁波seo高级方法
  • 网站搭建代码大全/seo优化几个关键词
  • 大连做网站报价/产品营销软文
  • 做框架模板的网站/上海优化公司有哪些