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

使用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

相关文章:

  • 匀速旋转动画的终极对决:requestAnimationFrame vs CSS Animation
  • Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
  • GlobalSign、DigiCert、Sectigo三种SSL安全证书有什么区别?
  • 第二章 2.3 数据存储安全风险之数据存储风险防范
  • HRI-2025 | 大模型驱动的个性化可解释机器人人机交互研究
  • RabbitMQ 在解决数据库高并发问题中的定位和核心机制
  • Haystack:AI与IoT领域的全能开源框架
  • 快充诱骗协议芯片,支持全协议支持最大功率140W给产品快速供电
  • 一文读懂RAG流程中用到的请求参数与返回字段
  • 【JVM】Java类加载机制
  • 【YiFeiWebApi】新增根据ERP单据性质设定自动生成单号
  • Java 线程池原理详解
  • 电气架构/域控制器/中央计算平台技术论坛
  • Linux进程调度:从时间片到实时任务的交响乐
  • 02.TypeScript 接口和对象类型
  • 高性能图片优化方案
  • [蓝桥杯]密文搜索
  • 科幻文字游戏Ollama deepseek-r1:qwen3
  • 计算机I/O系统:数据交互的核心桥梁
  • kubernetes》》k8s》》kubectl proxy 命令后面加一个
  • 产品做网站不花钱/百度怎么发免费广告
  • 澳门赌网站有做代理/郑州seo网站关键词优化
  • 兰州网站建设王道下拉強/地推十大推广app平台
  • 生日快乐软件制作app/深圳seo优化排名
  • 网页设计计划书/seo的优点有哪些
  • 廊坊网站建设/网页设计是干嘛的