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

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

相关文章:

[已解决]服务器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输入上…...

spring如何用三级缓存解决循环依赖问题

spring为何会出现循环依赖问题? 我们举个会产生循环依赖的例子,如下所示,可以看到AService类中依赖了BService类,同理呢,BService类中依赖了AService类,这就是所谓的循环依赖。 Component("aService&…...

【C#】`Task.Factory.StartNew` 和 `Task.Run` 区别

Task.Factory.StartNew 和 Task.Run 都是用来启动新任务的,但它们有一些关键区别,我们来一条一条讲清楚(配例子 结论)。 🆚 1. 语法和使用目的 对比项Task.RunTask.Factory.StartNew用途简化写法,用于启动…...

谈谈空间复杂度考量,特别是递归调用栈空间消耗?

空间复杂度考量是算法设计的核心要素之一,递归调用栈的消耗问题在前端领域尤为突出。 以下结合真实开发场景进行深度解析: 一、递归调用栈的典型问题 1. 深层次DOM遍历的陷阱 // 危险操作:递归遍历未知层级的DOM树 function countDOMNode…...

【2.项目管理】2.4 Gannt图【甘特图】

甘特图(Gantt)深度解析与实践指南 📊 一、甘特图基础模板 项目进度表示例 工作编号工作名称持续时间(月)项目进度(周)1需求分析3▓▓▓░░░░░░░2设计建模3░▓▓▓░░░░░░3编码开发3.5░░░▓▓▓▓░░…...

Ai工作流工具有那些如Dify、coze扣子等以及他们是否开源

Dify (https://difycloud.com/) 核心定位:专业级 LLM 应用开发平台,支持复杂 AI 工作流构建与企业级管理。典型场景:企业智能客服、数据分析系统、复杂自动化流程构建等。适合需要深度定制、企业级管理和复杂 AI 逻辑…...

【项目】C++同步异步日志系统-包含运行教程

文章目录 项目介绍地址:https://gitee.com/royal-never-give-up/c-log-system 开发环境核心技术为什么需要日志系统同步日志异步日志 知识补充不定参宏函数__FILE____LINE____VA_ARGS__ C使用C使用左值右值sizeof...() 运算符完美转发完整例子sizeof...() 运算符获取…...

Yolo_v8的安装测试

前言 如何安装Python版本的Yolo,有一段时间不用了,Yolo的版本也在不断地发展,所以重新安装了运行了一下,记录了下来,供参考。 一、搭建环境 1.1、创建Pycharm工程 首先创建好一个空白的工程,如下图&…...

Success is the sum of small efforts repeated day in and day out.

(翻译:"成功是日复一日微小努力的总和。") 文章内容: Title: The Silent Power of Consistency (标题翻译:《持续坚持的无声力量》) Consistency is the quiet force that turns asp…...

软件兼容性测试的矩阵爆炸问题有哪些解决方案

解决软件兼容性测试中的矩阵爆炸问题主要有优先级划分、组合测试方法、自动化测试技术等方案。其中,组合测试方法尤其有效。组合测试通过科学的组合算法,能够显著降低测试用例的数量,同时保持较高的测试覆盖率,例如正交实验设计&a…...

嵌入式学习(32)-TTS语音模块SYN6288

一、概述 SYN6288 中文语音合成芯片是北京宇音天下科技有限公司于 2010年初推出的一款性/价比更高,效果更自然的一款中高端语音合成芯片。SYN6288 通过异步串口(UART)通讯方式,接收待合成的文本数据,实现文本到语音(或 TTS 语音)的转换。宇音天下于 2002…...

霸王茶姬小程序(2025年1月版)任务脚本

脚本用于自动执行微信小程序霸王茶姬的日常签到和积分管理任务。 脚本概述 脚本设置了定时任务(cron),每天运行两次,主要用于自动签到以获取积分,积分可以用来换取优惠券。 核心方法 constructor:构造函数,用于初始化网络请求的配置,设置了基础的 HTTP 请求头等。 logi…...

从零到一:打造顶尖生成式AI应用的全流程实战

简介 生成式AI正以前所未有的速度改变我们的世界,从内容创作到智能客服,再到医疗诊断,它正在成为各行各业的核心驱动力。然而,构建一个高效、安全且负责任的生成式AI系统并非易事。本文将带你从零开始,逐步完成一个完整…...

Windows 10更新失败解决方法

在我们使用 Windows 时的时候,很多时候遇到系统更新 重启之后却一直提示“我们无法完成更新,正在撤销更改” 这种情况非常烦人,但其实可以通过修改文件的方法解决,并且正常更新到最新版操作系统 01修改注册表 管理员身份运行注…...

Windows下在IntelliJ IDEA 使用 Git 拉取、提交脚本出现换行符问题

文章目录 背景问题拉取代码时提交代码时 问题原因解决方案1.全局配置 Git 的换行符处理策略2.在 IntelliJ IDEA 中配置换行符3.使用 .gitattributes 文件 背景 在 Windows 系统下使用 IntelliJ IDEA 进行 Git 操作(如拉取和提交脚本)时,经常…...

ubuntu24.04.2 NVIDIA GeForce RTX 4060笔记本安装驱动

https://www.nvidia.cn/drivers/details/242281/ 上面是下载地址 sudo chmod x NVIDIA-Linux-x86_64-570.133.07.run # 赋予执行权限把下载的驱动复制到家目录下,基本工具准备,如下 sudo apt update sudo apt install build-essential libglvnd-dev …...

一种监控录像视频恢复的高效解决方案,从每一帧中寻找可能性

该软件旨在恢复从监控设备中删除或丢失的视频。该程序经过调整以处理大多数流行供应商的闭路电视系统中使用的专有格式,并通过智能重建引擎进行了增强,能够为监控记录提供任何通用解决方案都无法实现的恢复结果。如果不需要持续使用该软件,则…...

如何快速下载并安装 Postman?

从下载、安装、启动 Postman 这三个方面为大家详细讲解下载安装 Postman 每一步操作,帮助初学者快速上手。 Postman 下载及安装教程(2025最新)...

Unity Shader 学习18:Shader书写基本功整理

1. Drawer [HideInInspector]:面板上隐藏[NoScaleOffset]:隐藏该纹理贴图的TillingOffset[Normal]:检查该纹理是否设为法线贴图[HDR]:将颜色类型设为高动态范围颜色(摄像机也要开启HDR才有效果)[PowerSlid…...

1.1 计算机网络的概念

首先来看什么是计算机网络,关于计算机网络的定义并没有一个统一的标准,不同的教材有 不同的说法(这是王道书对于计算机网络的定义),我们可以结合自己的生活经验去体会这个 定义。 可以用不同类型的设备去连接计算机网络…...

Blender绘图——旋转曲线(以LCP与RCP为例)

最近在做左旋圆偏振光(LCP)与右旋圆偏振光(RCP)的研究,因此需要画出他们的图,接下来我就介绍一下用Blender怎么去画LCP与RCP。 首先你需要下载Blender软件,网上直接能搜到,图标如下…...

Spring与Mybatis整合

持久层整合 1.Spring框架为什么要与持久层技术进行整合 JavaEE开发需要持久层进行数据库的访问操作 JDBC Hibernate Mybatis进行持久层开发存在大量的代码冗余 Spring基于模板设计模式对于上述的持久层技术进行了封装 2.Mybatis整合 SqlSessionFactoryBean MapperScannerConfi…...

JDBC FetchSize不生效,批量变全量致OOM问题分析

背景 一个简单的基于 JDBC 采集数据库表的功能,当采集 Postgre SQL 某表,其数据量达到 500万左右的时候,程序一启动就将 JVM 堆内存「6G」干满了。 问题是程序中使用了游标的只前进配置,且设置了 fetchSize 属性: q…...

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗 docker - compose up - d 是一个用于管理 Docker 容器的命令,具体含义如下: 命令含义: up:用于创建、启动并运行容器,会根据 docker - compose.yml 文件中定义的服务配置来操作。-d:表示以“分离模式”(det…...

Python 装饰器(Decorators)

什么是装饰器? 装饰器(Decorator)本质上是一个 修改其他函数功能的函数。它的核心思想是:不修改原函数代码,动态添加新功能。比如: 记录函数执行时间 检查用户权限 缓存计算结果 自动重试失败操作 理解…...

A2 最佳学习方法

记录自己想法的最好理由是发现自己的想法,并将其组织成可传播的形式 (The best reason for recording what one thinks is to discover what one thinks and to organize it in transmittable form.) Prof Ackoff 经验之谈: 做培训或者写文章&#xff…...

蓝桥杯省模拟赛 阶乘求值

问题描述 给定 n,求 n! 除以 1000000007的余数。 其中 n! 表示 n 的阶乘,值为从 1 连乘到 n 的积,即 n!123…n。 输入格式 输入一行包含一个整数 n。 输出格式 输出一行,包含一个整数,表示答案。 样例输入 3样…...

MYTOOL-记事本

一、前言 目录 1.原型设计 2.程序实现 3.最终界面说明 二、环境 windows10 每个软件工具前期会设计大概的原型,我设计的原型工具使用Axure RP9,很不错的一个设计工具 三、正文 1.原型设计 2.程序实现 3.最终界面说明 四、结语...

Golang使用 ip2region 查询IP的地区信息

利用 ip2region 进行 IP 地址定位 import ("fmt""log""github.com/lionsoul2014/ip2region/binding/golang/xdb" )func main() {ip : "213.118.179.98"dbPath : ".\\cmd\\ip\\ip2region.xdb"// 1、初始化查询器//searcher,…...

StarRocks 中 CURRENT_TIMESTAMP 和 CURRENT_TIME 分区过滤问题

背景 本文基于Starrocks 3.3.5 最近在进行Starrocks 跑数据的时候,发现了一个SQL 扫描了所有分区的数据,简化后的SQL如下: select date_created from tableA where date_createddate_format(current_time(), %Y-%m-%d %H:%i:%S) limit 20其…...