Java应用程序的CPU使用率飙升原因分析
10月6日 封了心投稿 1、背景
在服务器上执行某个任务时,系统突然运行缓慢,top发现cpu飙升,一度接近100,最终导致服务假死。
2、CPU使用率怎么计算?
CPU1idleTimesysTime100idleTime:CPU处于空闲状态的时间sysTime:CPU处于用户态和内核台的时间总和
3、问题分析查看所有进程占系统cpu的排序,极大可能排第一的就是自己的java进程,pid就是进程号。1、top查看java进程下的所有线程占cpu情况。2、topHp进程id可查看进程堆栈信息3、jstackoptions进程号optionsF当正常输出的请求不被响应时,强制输出线程堆栈m如果调用到本地方法的话,可以显示CC的堆栈l除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstacklpid来观察锁持有情况查找某进程下》线程id(jstack堆栈信息中的nid)0xa的线程状态4、jstack进程号grep线程id最后可以把对应堆栈信息导入到log中,进行分析
jstack命令查看对应进程的堆栈信息
3、可能导致的原因计算密集型的程序是比较耗CPU使用率的1、频繁GC,访问量高时,有可能造成频繁的YGC、甚至FGC。当调用量大时,内存分配过快,就会造成GC线程不停的执行,导致CPU飙高2、代码中有大量消耗CPU的操作,导致CPU过高,系统运行缓慢;例如某些复杂算法,甚至算法BUG,无限循环递归等等3、由于锁使用不当,导致死锁4、序列化与反序列化,后文中举了一个真实的案例,程序执行xml解析的时,调用量增大的情况下,导致了CPU被打满5、加密、解密6、正则表达式校验,曾经线上发生一次血案,正则校验将CPU打满。大概原因是:Java正则表达式使用的引擎实现是NFA自动机,这种引擎在进行字符匹配会发生回溯(backtracking)7、线程上下文切换、当启动了很多线程,而这些线程都处于不断的阻塞状态(锁等待、IO等待等)和执行状态的变化过程中。当锁竞争激烈时,很容易出现这种情况
4、常见的一些问题(来源于其他大佬的总结)
41。while的无限循环会导致CPU使用率飙升吗?
是。
首先,无限循环将调用CPU寄存器进行计数,此操作将占用CPU资源。那么,如果线程始终处于无限循环状态,CPU是否会切换线程?
除非操作系统时间片到期,否则无限循环不会放弃占用的CPU资源,并且无限循环将继续向系统请求时间片,直到系统没有空闲时间来执行任何其他操作。
42。频繁的YoungGC会导致CPU占用率飙升吗?
是。
YoungGC本身就是JVM用于垃圾收集的操作,它需要计算内存和调用寄存器。因此,频繁的YoungGC必须占用CPU资源。
让我们来看一个现实世界的案例。for循环从数据库中查询数据集合,然后再次封装新的数据集合。如果内存不足以存储,JVM将回收不再使用的数据。因此,如果所需的存储空间很大,您可能会收到CPU使用率警报。
43。具有大量线程的应用程序的CPU使用率是否较高?
不是。
如果通过jstack检查系统线程状态时线程总数很大,但处于Runnable和Running状态的线程数不多,则CPU使用率不一定很高。
我遇到过这样一种情况:系统线程的数量是1000,其中超过900个线程处于BLOCKED和WAITING状态。该线程占用很少的CPU。
但是大多数情况下,如果线程数很大,那么常见的原因是大量线程处于BLOCKED和WAITING状态。
44。对于CPU占用率高的应用程序,线程数是否较大?
不是。
高CPU使用率的关键因素是计算密集型操作。如果一个线程中有大量计算,则CPU使用率也可能很高。这也是数据脚本任务需要在大规模集群上运行的原因。
45。处于BLOCKED状态的线程是否会导致CPU占用率飙升?
不会。
CPU使用率的飙升更多是由于上下文切换或过多的可运行状态线程。处于阻塞状态的线程不一定会导致CPU使用率上升。
46。如果分时操作系统中CPU的值us或sy值很高,这意味着什么?
可以使用命令查找CPU的值us和sy值top,如以下示例所示:
us:用户空间占用CPU的百分比。简单来说,高我们是由程序引起的。通过分析线程堆栈很容易找到有问题的线程。
sy:内核空间占用CPU的百分比。当sy为高时,如果它是由程序引起的,那么它基本上是由于线程上下文切换。
投诉 评论
2022年访港旅客逐步上升新华社香港1月16日电(记者谢妞)香港旅游发展局16日公布2022年全年访港游客数字。资料显示,2022年访港旅客的初步数据为60万人次,按年比较增加超过560。资料显示……
Minisforum推出HX99G迷你PCAMDRyzen9Minisforum宣布,推出HX99G迷你PC,这是去年HX90G的升级版本。HX90G搭载了AMDRyzen95900HX处理器,加速频率达到4。6GHz,加上基于Navi……
迎接内地游客!香港迪士尼乐园开设一站式旅游服务随着香港旅游签证恢复办理,粤港两地联系更加亲密。旅游业界正在重塑香港为区内首选旅游目的地。暂别三年,内地游客重返香港迪士尼乐园,将会有什么特别的体验?香港迪士尼乐园度假区……
如龙维新极预购提前玩游戏最高立减20元如龙系列作为世嘉旗下的人气游戏品牌,从第一作发布至今已经陪伴玩家走过了17个年头,《如龙:维新极》作为如龙工作室的开年之作,隆重推出了比前作画面更为精美的简体中文版本,更有其他……
以农业知识图谱为案例介绍neo4j图数据库的使用说明上篇博客《知识图谱构建利器:图数据库Neo4j的环境部署和简单使用》分享了Neo4j图数据库的环境搭建和简单使用,下面就以农作物为例创建一个简单的农作物相关的知识图谱……
周末不想人挤人?快来看看这些宝藏小众出游地吧!周末就要出门玩快出门和朋友们拍照打卡吧!小途又带了几个小众推荐地接着往下看看吧01hr这个季节游玩永泰百漈沟生态景区景区内峡谷纵横,峰峦叠嶂,植被……
无边界无国界第六届全国自有品牌大会精彩回顾历经5载,从商品力到价值链,从零售商到生产商,从服务商到消费者,我们见证了自有品牌在中国的快速发展,见证了中国流通产业的转型革新。11月30日,第六届全国自有品牌大会在线……
街拍粉嫩紧身裙的辣妈,给人风韵十足的感觉问题:怎么才能每天都收到这种文章呢?答案:只需要点击右上角关注即可。街拍:粉嫩紧身裙的辣妈,给人风韵十足的感觉小姐姐和男友一起逛街,没有精致的装扮,显得简单自……
敦煌莫高窟,探险者发现裂缝里的千年玄机在北京地铁建国门站里,每天人来人往的人们都会看到一幅经典壁画。这是迄今为止,世界上最早有刊印日期的印刷品之一,是世界上最早的书籍《金刚经》。北京地铁建国门站的壁画遗……
时尚街拍展现最真实的美秋天飒爽,微风吹来,一地金黄的落叶仿佛银装素裹一般美丽,在这样美好的季节里街拍美女,真是一种美的享受。披肩的长发,秀气的脸庞,白色的职业工装和黑色长裙,在这种色彩下显得分外特别……
那些有趣的app(第三弹8、全现在涨知识指数支持iPhone、Android全世界的兄弟全现在,是一款很硬核的知识百科软件,定位与全世界的纵观路线不同,从横截面,让你看到不一样的世界……
电视将会被淘汰在90年代,电视是每个家庭的必备,新人结婚必买的标配。那个时候的电视观看率很高,每每一部电视剧热播,大街小巷就会同时传出热播剧的主题曲。没有有线电视信号的时候,家家户户,……