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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis基于注解开发

Mybatis基于注解进行开发 基于注解形式开发Mybatis省去XML的SQL映射配置文件&#xff08;只需要在Mybatis的核心配置文件中设置要扫描的接口通过Mapper标签中的子标签<package>指定要扫描的包&#xff09; 注意&#xff1a;在进行想改的SQL操作的时候首先要注意数据表的…

【C++】STL性能优化实战

STL性能优化实战 STL (Standard Template Library) 是 C 标准库的核心部分&#xff0c;提供了各种容器、算法和迭代器。虽然 STL 提供了强大的功能&#xff0c;但不恰当的使用可能导致性能问题。下面我将详细介绍 STL 性能优化的实战技巧&#xff0c;并通过具体案例说明。 1.…

OSI模型_TCP/IP模型_五层模型

文章目录 OSI模型_TCP/IP模型_五层模型模型对比模型层级对比关键区别对比 OSI模型OSI模型概述举例说明流程图示 TCP/IP 四层模型模型结构举例说明流程图示 TCP/IP 五层模型模型的结构举例说明流程图示 OSI模型_TCP/IP模型_五层模型 学OSI&#xff0c;用TCP/IP&#xff0c;分析选…

R语言——字符串

参考资料&#xff1a;学习R 文本数据存储在字符向量中。重要的是&#xff0c;字符向量中的每个元素都是字符串&#xff0c;而非单独的字符。 文本的基本单位是字符向量&#xff0c;着意味着大部分字符串处理函数也能用于字符向量。 1、创建和打印字符串 字符向量可用c函数创建…

如何区别在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成与配置指南

在现代的 Web 开发中&#xff0c;API 文档是不可或缺的一部分。Knife4j 是基于 Swagger 的增强工具&#xff0c;它不仅提供了更友好的 API 文档界面&#xff0c;还支持更多实用的功能&#xff0c;如离线文档导出、全局参数配置等。本文将详细介绍如何在 Spring Boot 2 和 Sprin…

pagehelper 分页插件使用说明

pom.xml&#xff1a;pageHelper坐标 <!--pageHelper坐标--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency> 分…

C++可变参数

可变参数C风格的可变参数C风格可变参数的使用 C11可变参数模板递归展开参数包参数列表展开折叠表达式 STL中的emplace插入接口 可变参数 C风格的可变参数 可变参数是一种语言特性&#xff0c;可以在函数声明中使用省略号...来表示函数接受可变数量的参数。 例如典型的printf…

数据库的操作,以及sql之DML

首先&#xff0c;创建表以及插入数据 create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不详"); in…

vue2前端日志数据存储(indexedD)自动清理3天前的数据

前言&#xff1a;关于Dexie.js这个前端本地数据库&#xff0c;如何使用IndexedDB来存储数据&#xff0c;并且设置到期自动清理的机制。首先&#xff0c;我需要回忆一下Dexie.js的基本用法&#xff0c;以及IndexedDB的特性。IndexedDB是浏览器中的一种非关系型数据库&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理

目录 一&#xff0c;初识索引 二&#xff0c;MySQL与磁盘交互的基本单位 三&#xff0c;MySQL中数据文件的特性 四&#xff0c;理解page和索引 五&#xff0c;聚簇索引和非聚簇索引 六&#xff0c;索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文…

springboot项目启动常见的问题以及配置以及一些使用技巧

1.配置仓库 这里要把xml文件从国外的镜像源改成国内的镜像源。改镜像源可以查看这篇文章 点击查看 2.更改文件类型 方法一&#xff1a;右键文件找到Mark Dircetory as可以更改文件类型 方法二&#xff1a; 3.springboot本地Maven仓库的位置 4.pom.xml文件报红错误怎么办 这…

【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…

流量分析2

一&#xff0c;webshell流量 [GKCTF 2021]签到 先看协议分级&#xff0c;大部分是tcp&#xff0c;里面有http的基于的行文本数据占了很大的比重&#xff0c;看看里面有什么 过滤http的流量 点击一条流量&#xff0c;里面的内容进去后面有基于行的文本数据&#xff0c; 先解he…

头歌实践教学平台--【数据库概论】--SQL

一、表结构与完整性约束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加与删除字段 #语句1&#xff1a;删除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #语句2&#xff1a;添加列unitPrice alter t…

在 React 中,组件之间传递变量的常见方法

目录 1. **通过 Props 传递数据**2. **通过回调函数传递数据**3. **通过 Context API 传递数据**4. **通过 Redux 管理全局状态**5. **通过事件总线&#xff08;如 Node.js 的 EventEmitter&#xff09;**6. **通过 Local Storage / Session Storage**7. **通过 URL 查询参数传…

Redis + 布隆过滤器解决缓存穿透问题

Redis 布隆过滤器解决缓存穿透问题 1. Redis 布隆过滤器解决缓存穿透问题 &#x1f4cc; 什么是缓存穿透&#xff1f; 缓存穿透指的是查询的数据既不在缓存&#xff0c;也不在数据库&#xff0c;导致每次查询都直接访问数据库&#xff0c;增加数据库压力。 例如&#xff1…

Vue动态添加或删除DOM元素:购物车实例

Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件处理:v-on 指令》 《Vue表单元素绑定:v-model 指令》…

vue h5实现车牌号输入框

哈喽&#xff0c;大家好&#xff0c;最近鹏仔开发的项目是学校校内车辆超速方面的统计检测方面的系统&#xff0c;在开发过程中发现有个小功能&#xff0c;就是用户移动端添加车牌号&#xff0c;刚开始想着就一个输入框&#xff0c;提交时正则效验一下格式就行&#xff0c;最后…

硬件基础(5):(3)二极管的应用

文章目录 [toc]1. **整流电路****功能**&#xff1a;**工作原理**&#xff1a;**应用实例**&#xff1a;电路组成&#xff1a;整流过程&#xff1a;电路的应用&#xff1a; 2. **稳压电路****功能**&#xff1a;**工作原理**&#xff1a;**应用实例**&#xff1a;电路组成及功能…

Wireshark网络抓包分析使用详解

序言 之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark&#xff0c;但一直没怎么专门去用过&#xff0c;也没去系统学习过&#xff0c;就想趁着备考的网络相关知识还没忘光&#xff0c;先来系统学下整理点笔记~ 什么是抓包&#xff1f;抓包就是将网络传输…