Redian新闻
>
记一次 JVM CPU 使用率飙高问题的排查过程

记一次 JVM CPU 使用率飙高问题的排查过程

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:guobinhit.blog.csdn.net/
article/details/70823903

问题现象

首先,我们一起看看通过 VisualVM 监控到的机器 CPU 使用率图:

如上图所示,在 下午3:45 分之前,CPU 的使用率明显飙高,最高飙到近 100%,为什么会出现这样的现象呢?

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

排查过程

Step 1: 使用top命令,查询资源占用情况:

如上图所示,显示了服务器当前的资源占用情况,其中PID为5456的进程占用的资源最多。

在这里,我们也使用top -p PID命令,查询指定PID的资源占用情况:

Step 2: 使用ps -mp PID -o THREAD,tid,time命令,查询该进程的线程情况:

在这里,我们也使用ps -mp PID -o THREAD,tid,time | sort -rn命令,将该进程下的线程按资源使用情况倒序展示:

Step 3: 使用printf "%x\n" PID命令,将PID转为十六进制的TID:

在这里,我们之所以需要将PID转为十六进制是因为在堆栈信息中,PID是以十六进制形式存在的。

Step 4: 使用jstack PID | grep TID -A 100命令,查询堆栈信息:

如上图所示,显示该进程下多个线程均处于TIMED_WAITING状态。

虽然线程处于WAITING或者TIMED_WAITING状态都不会消耗 CPU,但是线程频繁的挂起和唤醒却会消耗 CPU,而且代价高昂。

而上面之所以会出现 CPU 使用率飙高的情况,则是因为有人在做压测。

特别地,在 mock 底层接口的时候,使用了类似TimeUnit.SECONDS.sleep(1)这样的语句。

至于为何在 下午3:45 分之后,CPU 的使用率降下来了,则是因为停止了压测。

除此之外,我们还可以使用jinfo和jstat命令来查询 Java 进程的启动参数以及 GC 情况:

使用jinfo PID命令,查询启动参数:

如上图所示,使用该命令我们主要是为了查询启动参数,如初始化堆大小、垃圾回收器等配置。

使用jstat -gcutil PID 1000命令,查询 GC 情况:

如上图所示,显示了PID为20567的 Java 进程每秒的 GC 情况,其中1000表示 GC 状态的更新频率,单位为毫秒。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
从《经济学人》关于台海问题的报道中,我读到了这些有用信息!TPUv4开放使用!谷歌新一代TPU性价比有多高?最担心的事发生了,提出问题的人被解决记一次组合拳渗透测试天堂到了,去天堂的准备下车!车祸让他的记忆倒回1993年。然而忘记一切,他还记得妻子30岁还不结婚的男人都是有问题的,那女人呢?第5次! 加拿大央行今天再加息0.75! 加拿大房贷飙高85万人恐"断舍离" 高通膨和利率打击下,加拿大人债务狂飙!苹果M2芯片全系剧透:最高48核CPU、152核GPU佛山市委书记一天跑三地,释放了什么微妙讯息?记一次在美国公路上开车没油的经历彭博债券南向通双周报 | 美国CPI环比上涨;美国国债收益率飙升;涨跌晴雨表什么是GPU?GPU和显卡的关系?GPU国产化布局?为什么说ESG合规,是企业可持续发展核心问题的解决方案?JVI I 夏宇尘课题组揭示乙肝病毒核心蛋白不参与cccDNA转录调控反垄断审查过关!3000亿家电巨头入主这家A股公司对通胀问题的一些思考一个华人家长兼社会学教授对孩子吸毒问题的干货建议 | 美国毒品危机系列4月光绿研院日报 | 阿里云20%新增算力将使用自研CPU因使用率过低 Google Translate不再向中国区域提供翻译服务CPU和GPGPU市场现状及趋势马斯克捅了乌克兰问题的“马蜂窝”女教师勇救辅警,被记一等功!美国新一轮限制下,国产GPU、部分CPU皆正常出货线上踩坑记:项目中一次OOM的分析定位排查过程!注意…这5种沙拉酱 会让血糖飙高教育随笔(106)高考文言文备考之七MyBatis引起的线程池线程打满问题排查过程思考问题的4个层次思想周报丨成问题的漫威电影新角色;身份政治为何失败【限时领取】10年级9门AP 5分?23科,1000+页重难点笔记一次分享!10月7日:电影《我不是药神》中到底是怎么解决吃不起救命药的问题的?成天说要打台湾,你打个金门我看看中国共产党代表董必武签了字的
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。