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

【JVM-04】线上CPU100%

【JVM-04】线上CPU100%

  • 1. 如何排查
  • 2. 再举一个例子

1. 如何排查

⼀般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢?先进服务器,⽤top -c 命令找出当前进程的运⾏列表按⼀下 P 可以按照CPU使⽤率进⾏排序显示Java进程 PID 为 2609 的java进程消耗最⾼。

[root@VM-8-7-centos ~]# top -c

在这里插入图片描述

然后我们需要根据PID 查出CPU⾥⾯消耗最⾼的进程
使⽤命令 top -Hp 2609 找出这个进程下⾯的线程,继续按P排序

[root@VM-8-7-centos ~]# top -Hp 2609

可以看到 2854 CPU消耗最⾼
在这里插入图片描述
2854是⼗进制的,我们需要转换为⼗六进制,转换结果:b26
接下来就需要导出我们的进程快照了,看看这个线程做了啥

[root@VM-8-7-centos ~]# jstack -l 2609 > ./2609.stack

再⽤grep查看⼀下线程在⽂件⾥做了啥

[root@VM-8-7-centos ~]# cat 2609.stack |grep 'b26' -C 8

这⾥就随便定位⼀个,基本上这样查都可以定位到你死循环的那个类。
在这里插入图片描述

2. 再举一个例子

public class FullCPU {public static void main(String[] args) {while(true){}}
}java -cp . FullCPU

在这里插入图片描述

PID (进程标识符)
[root@VM-8-7-centos ~]# top -Hp 12844

结合起来,top -Hp 12844 命令的作用是:
-H 显示所有线程 -p12844 只显示 PID 为 12844 的进程信息

  1. 启动 top 命令。
  2. 显示 PID 为 12844 的进程及其所有线程的详细信息。
  3. 实时更新该进程和线程的资源使用情况。

在这里插入图片描述

[root@VM-8-7-centos ~]# jstack -l 12844 > ./12844.stack1284516进制为0x322d
cat 12844.stack |grep '0x322d' -C 8

在这里插入图片描述

[root@VM-8-7-centos ~]# jstack -l 12844 > ./12844.stack执行这个命令后,jstack 工具将生成一个包含 PID 为 12844 的 Java 进程的所有线程的当前状态的快照,并将其保存到 ./12844.stack 文件中。文件内容通常包括每个线程的堆栈跟踪、线程状态以及锁信息。

完整命令:cat 12844.stack | grep '0x322d' -C 8

  1. 这条命令首先使用 cat 命令显示 12844.stack 文件的内容。
  2. 然后通过管道符 | 将 cat 命令的输出传递给 grep 命令。
  3. grep 命令搜索包含 ‘0x322d’ 的行,并显示该行及其上下 8 行的内容。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • wordpress外贸建站公司案例英文模板
  • Netty服务端接收TCP链接数据
  • 代码随想录算法训练营:28/60
  • JAVA中关于compareTo方法的原理深挖
  • 【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising
  • VS2019 因公司加密无法运行程序原因
  • 树莓派4B_OpenCv学习笔记21:OpenCV_haar人脸识别
  • Day1--每日一练
  • P8086 『JROI-5』Music
  • 深入理解外观模式(Facade Pattern)及其实际应用
  • 网络钓鱼中的高级同形异义:网络安全的新威胁
  • 【前端】css控制背景图片缩放
  • C++list的模拟实现
  • 【Python123题库】#统计单词的数量 #各位数字之和为5的数 #输出单词
  • qt 按钮链接一个槽函数
  • 【RocksDB】TransactionDB源码分析
  • C++类中的特殊成员函数
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • js中的正则表达式入门
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Rancher-k8s加速安装文档
  • TCP拥塞控制
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 从零搭建Koa2 Server
  • 第2章 网络文档
  • 前端相关框架总和
  • 前嗅ForeSpider教程:创建模板
  • 项目管理碎碎念系列之一:干系人管理
  • 2017年360最后一道编程题
  • ionic异常记录
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (ibm)Java 语言的 XPath API
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)scrum常见工具列表
  • .NET 4.0中的泛型协变和反变
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net的DataSet直接与SQL2005交互
  • .NET命名规范和开发约定
  • .Net小白的大学四年,内含面经
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ C++ ] 类和对象( 下 )
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android]Tool-Systrace
  • [Angular 基础] - 表单:响应式表单
  • [AutoSar]BSW_Com02 PDU详解