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

java项目CPU爆高问题排查方案

问题:CPU占用过高时,系统处理请求的速度会变慢,导致延迟增加,可能导致其他任务无法获取足够的处理资源,导致服务宕机,高CPU占用可能与大量线程阻塞和死锁有关,在多线程任务中,如果线程无法获取CPU资源或者被阻塞,可能导致应用阻塞

常见的原因:在代码中出现死循环;高并发,系统创建大量线程,导致CPU负担过重;代码中频繁地创建和销毁对象,JVM堆大小不足,导致GC不断运行;代码中存在耗时过长的密集计算型任务;

排查方案:

第一种方案:使用jstack

1. 使用top指令进行查看各个进程的资源占有情况,观察出CPU占有较高的进程ID

top

image

 2. 根据进程ID查找导致CPU飙升的线程信息

案例中是进程8820导致CPU飙升

ps H -eo pid, tid, %cpu | grep 8820
各参数含义
- `ps`:用于查看当前运行的进程状态。
- `H`:显示进程的线程层级(线程树)。`ps` 默认显示进程,但加上 `H` 后,它会显示每个进程的线程(如果该进程有多个线程的话),并以树状结构展示。
- `-eo pid, tid, %cpu`:- `pid`:显示进程的 PID(进程标识符)。- `tid`:显示线程的 TID(线程标识符),即线程的 ID。- `%cpu`:显示该进程或线程使用的 CPU 百分比。
-`| grep 8820`:通过 `grep` 过滤,查找包含 `8820` 的行,通常用于筛选出与特定进程或线程相关的信息。

以下展示了PID为8820下的所有线程ID以及他们所占的CPU占有率。 通过观察可以看到:线程ID为8848的线程CPU占有率较高,所以我们后续对8848线程进行分析。

image

3. 查找该线程的堆栈信息

首先将线程ID转换成16进制

printf "%x\n" 8848
输出结果会将8848线程id转换成16进制,并输出结果为2290

 接着使用stack指令来获取进程 ID 为 8820 的 Java 程序的所有线程堆栈信息

jstack 8820 | grep -A 10 2290:生成进程ID为8820的所有线程堆栈信息,并且查找2290后面的10行信息并打印
指令参数如下:
- `jstack 8820`:打印出Java程序中ID为8820的进程中所有线程的堆栈信息快照
- `|`:管道符,表示将 `jstack` 命令的输出传递给后续的命令
- `grep -A 10 2290`:查找到2290的后10行记录信息- `grep` 进行文本搜索- `-A 10` 显示后10行的信息- `2290` 搜索要求是2290

通过观察最后显示的进程为8820,线程为2290的堆栈信息情况,我们可以定位到导致CPU飙升的代码所在位置。
总结如下:
  1. 使用top指令,找到CPU飙升的进程id
  2. 使用ps指令,打印出该进程id下的各线程CPU占有率,找到CPU飙升的线程
  3. 使用jstack指令,打印该进程下,指定线程的堆栈信息快照,定位CPU飙升的代码字段
  4. 根据定位,优化逻辑出错的代码。

第二种方案:使用阿里的Arthas 快速入门 | arthas

1. 启动: java -jar arthas-boot.jar

2. 输入:1

3. 输入: thread -n 5

用arthas检测应用程序导致占用较高的代码,5代表占用较高的前5个

http://www.hskmm.com/?act=detail&tid=28835

相关文章:

  • 2025实验室净化优质厂家推荐:华锐净化专业定制,洁净空间首
  • 小九源码-springboot051-智能推荐旅游平台 - 实践
  • 2025方钢供应厂家推荐:山东鑫泽金属制品优质选择!
  • 2025年中国行业内领先的GEO(AI搜索优化)厂家权威推荐榜单:四川云视GEO当首
  • 【vLLM】使用vLLM部署Qwen3-VL-30B-A3B-Instruct
  • 2025 屋顶防水维修/外墙防水维修/电梯井防水维修厂家推荐榜:专注全场景渗漏解决方案供应!
  • 2025 流化床/GMP标准/实验室气流粉碎机厂家推荐榜:聚焦多行业粉碎需求,赋能高效生产!
  • 2025年OPP涂布机源头厂家最新推荐榜:技术领先与市场口碑
  • 【EBS】EBS系统新克隆环境的MRP无法运行
  • 花纹铝板口碑推荐/铝板厂家推荐/铝板知名品牌
  • FirstOrDefault
  • 正则表达式详解
  • 2025通风气楼厂家推荐:欧诺通风设备,高效节能品质之选
  • 2025年湖南短视频代运营/拍摄/剪辑/方案策划/推广/引流/IP打造公司综合实力排行榜推荐
  • 2025粉末涂料厂家推荐:财诺名荣,环保高效品质之选!
  • 2025.10.11NOIP模拟
  • 颠覆传统RAG!Agentic RAG登场,AI代理如何“自我进化”解决复杂 query?
  • 在 Windows 下集成 Conda 与 VS Code 打造高效开发环境
  • 洛谷题单指南-进阶数论-P2421 [NOI2002] 荒岛野人
  • 2025粉末涂料厂家最新推荐榜:环保高效与色彩持久的行业佼佼
  • Idea摸鱼看小说插件(YsQy-Book)-免费使用
  • 贴牛皮纸铝卷生产商推荐/铝卷生产厂家/铝卷哪家好
  • 2025浇注型聚氨酯厂家口碑排行榜:品质与服务双优之选
  • RAFT 共识算法
  • 2025氧化镁厂家最新推荐榜:高纯度与优质服务并重的行业先锋
  • contenteditable 深度交互教程
  • 距离和
  • 2025风机盘管厂家口碑推荐榜:高效节能与稳定性能的行业首选
  • 痞子衡嵌入式:在i.MXRT下测试启动特性时可改写OTP Shadow寄存器而不烧OTP
  • 直流微电网运行控制仿真算法设计与实现