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

使用jstack排查CPU飙升的问题记录

        最近,看到短视频传播了一个使用jstack来协助排查CPU飙升的案例。我也是比较感兴趣,参考了视频博主的流程,自己做了下对应案例的实战演练,在此,想做一下,针对相关问题模拟与排查演练的实战过程记录。

       案例中所使用的DEMO代码,我已经放到了以下的代码仓库中,有需要的同学,可以自行下载与学习演练。代码仓库地址:https://github.com/AlickLiubc/cpu-problems-demo

        在演练代码中,主要通过一段死循环,来模拟了系统CPU飙升的代码原因。

具体步骤:

步骤1:

将代码打成jar包并放置在Linux的系统运行环境中运行:

mvn clean package -DskipTests
nohup java -jar cpu-problems-demo-1.0-SNAPSHOT.jar > /dev/null 2> /dev/null &

步骤2:

通过浏览器打开与观察接口的问题现象,如下图所示,浏览器处于不断加载的过程中:

步骤3:

使用top命令,查看占用CPU比较高的进程ID(十进制),可以看到PID=16013的进程占用CPU很高。

top

步骤4:

进一步使用top命令查询占用CPU比较高的线程ID

top -H -p 16013

此时,可以得到占用CPU很高的线程ID(十进制),PID=16029。

步骤5:

将步骤4中得到的十进制的线程ID转换为十六进制值为0x3e9d:

printf "0x%x\n" 16029

步骤6:

结合以上步骤中得到的进程ID(十进制)与线程ID(十六进制),可以找到问题源头的相关代码信息:

jstack 16013 | grep 0x3e9d-A 20

http://www.lryc.cn/news/2399341.html

相关文章:

  • cursor如何开启自动运行模式
  • SecureCRT 设置超时自动断开连接时长
  • 《复制粘贴的奇迹:原型模式》
  • IEC 61347-1:2015 灯控制装置安全标准详解
  • Ansys Zemax | 手机镜头设计 - 第 4 部分:用 LS-DYNA 进行冲击性能分析
  • [蓝桥杯]实现选择排序
  • [蓝桥杯]卡片换位
  • 【论文笔记】High-Resolution Representations for Labeling Pixels and Regions
  • 【题解-洛谷】P9422 [蓝桥杯 2023 国 B] 合并数列
  • 在MATLAB中,`mean(P_train, 2)` 的含义
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
  • 109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
  • 第N1周:one-hot编码案例
  • Windows安装docker desktop
  • Ros(俩不同包的节点 交流 topic message)
  • 李沐《动手学深度学习》 | 数值稳定性
  • OpenCV CUDA模块图像处理------图像连通域标记接口函数connectedComponents()
  • Android Studio 打包时遇到了签名报错问题:Invalid keystore format
  • 内存管理【Linux操作系统】
  • Go语言学习-->从零开始搭建环境
  • 【力扣】3403. 从盒子中找出字典序最大的字符串 I
  • 苹果企业签名撤销
  • 12306高并发计算架构揭秘:Apache Geode 客户端接入与实践
  • JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变
  • 【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答
  • Neo4j 监控全解析:原理、技术、技巧与最佳实践
  • PyTorch——优化器(9)
  • 07 APP 自动化- appium+pytest+allure框架封装
  • Postgresql常规SQL语句操作
  • 智能合约安全漏洞解析:从 Reentrancy 到 Integer Overflow