CPU占用过高分析

news/2025/1/11 21:54:01/

在系统维护期间我们可能会经常遇到CPU 过高的情况,如果长时间不处理,可能最终会导致宕机或者服务挂掉。那什么原因会导致这种情况,这就需要我们一步一步去分析了。

一、通过 top 命令查看占用CPU较高的进程。可以看出29433进程占用CPU较高。

top - 13:55:32 up 59 days, 19:18,  2 users,  load average: 0.00, 0.04, 0.09
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.7 us,  0.3 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267564 total,   271608 free,  9033932 used,  6962024 buff/cache
KiB Swap:  8388604 total,  8364736 free,    23868 used.  5913400 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
29433 wuuser    20   0 7805852 1.132g  19216 S   0.7  7.3   6:07.13 java   
29355 wuuser    20   0 6909304 1.093g  17248 S   0.3  7.0   2:29.96 java 
29558 wuuser    20   0 7763476 974788  15860 S   0.3  6.0   1:54.47  java  
29945 wuuser    20   0 7793536 1.202g  21344 S   0.3  7.7   4:31.02 java

二、通过 top -H -p pid 命令查看进程内各个线程占用的 CPU 百分比 。通过这个命令

我们可以发现线程29436占用时长多  。

top -H -p 29433
top - 13:58:57 up 59 days, 19:22,  2 users,  load average: 0.04, 0.07, 0.10
Threads: 132 total,   0 running, 132 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267564 total,   271024 free,  9034476 used,  6962064 buff/cache
KiB Swap:  8388604 total,  8364736 free,    23868 used.  5913044 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  
29433 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.00 java  
29436 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:08.91 java    
29437 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java    
29438 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.35 java    
29439 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java     
29440 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java   
29441 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java

三、使用 printf "%x\n" 线程号将异常线程号转化为16进制

printf "%x\n" 29436
72fc

四、使用 jstack 进程号| grep 线程号 -A90 命令来打印JAVA 堆栈信息,定位出现异常的代码,定位错误原因。

 jstack 29433|grep 72fc -A90

"main" prio=10 tid=0x00007f16fc00e000 nid=0x72fc in Object.wait() [0x00007f17056d9000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0000000778044670> (a java.lang.Class for com.wu.mortgage.service.OrderServiceStartup)
        at java.lang.Object.wait(Object.java:503)
        at com.wu.mortgage.service.OrderServiceStartup.main(OrderServiceStartup.java:47)
        - locked <0x0000000778044670> (a java.lang.Class for com.wu.mortgage.service.OrderServiceStartup)

"VM Thread" prio=10 tid=0x00007f16fc14a000 nid=0x7309 runnable

"Gang worker#0 (Parallel GC Threads)" prio=10 tid=0x00007f16fc01f800 nid=0x72fd runnable

"Gang worker#1 (Parallel GC Threads)" prio=10 tid=0x00007f16fc021800 nid=0x72fe runnable

"Gang worker#2 (Parallel GC Threads)" prio=10 tid=0x00007f16fc023000 nid=0x72ff runnable

"Gang worker#3 (Parallel GC Threads)" prio=10 tid=0x00007f16fc025000 nid=0x7300 runnable

"Gang worker#4 (Parallel GC Threads)" prio=10 tid=0x00007f16fc027000 nid=0x7301 runnable

"Gang worker#5 (Parallel GC Threads)" prio=10 tid=0x00007f16fc029000 nid=0x7302 runnable

"Gang worker#6 (Parallel GC Threads)" prio=10 tid=0x00007f16fc02b000 nid=0x7303 runnable

"Gang worker#7 (Parallel GC Threads)" prio=10 tid=0x00007f16fc02d000 nid=0x7304 runnable

"Concurrent Mark-Sweep GC Thread" prio=10 tid=0x00007f16fc106800 nid=0x7307 runnable
"Gang worker#0 (Parallel CMS Threads)" prio=10 tid=0x00007f16fc102000 nid=0x7305 runnable

"Gang worker#1 (Parallel CMS Threads)" prio=10 tid=0x00007f16fc104000 nid=0x7306 runnable

"VM Periodic Task Thread" prio=10 tid=0x00007f16fcbed800 nid=0x7314 waiting on condition

JNI global references: 522


http://www.ppmy.cn/news/335841.html

相关文章

苹果笔记本电脑运行win系统时温度过高解决办法

如果大家用的是MacBook Pro系列的笔记本电脑&#xff0c;特别是在Win系统下&#xff0c;一定都会遇到温度过高的问题吧&#xff0c;特别是在运行网络游戏、AE、AutoCAD等大软件时&#xff0c;这个问题尤为突出。但如果在很多搜索网站搜索这个问题&#xff0c;大部分的回答是“温…

CPU温度过高解决方法

kernel :CPU1: Running in modulated clock mode kernel :CPU1: Temperature above threshold 服务器CPU工作温度过高. 查询资料后得知是 2.6 内核的相应阀值过低造成了这种状况。 vi /etc/syslog.conf 注释掉 *.emerg 这一行 /etc/init.d/syslog restart 就不会出现 CPU …

夏天CPU温度过高原因及解决办法

从第二电脑网的经验来说CPU温度过高会造成电脑死机、自动重启 、自动关机、蓝屏等现象&#xff0c;而且对主板和CPU的使用寿命会有一定的影响。cpu温度过高的原因有哪些&#xff1f;如何查看CPU温度&#xff1f;如何给CPU降温&#xff1f;怎样应对CPU温度过高呢&#xff1f;第二…

解答:CPU温度多少正常?CPU温度过高怎么解决?

CPU作为电脑工作的核心部件同时也是发热大户&#xff0c;然而CPU的温度多少是正常的呢&#xff1f;温度过高怎么解决&#xff1f;包括MTOOU.INFO穆童自己的内的很多人在感觉电脑温度不正常时总会有这样的疑问&#xff0c;下面结合我个人的经验以及百度知道、QQ问问以及中关村等…

笔记本CPU正常温度是多少?

身边用本本的人开始多起来了&#xff0c;转篇文章 CPU的正常温度 保证在温升30度的范围内一般是稳定的。也就是说&#xff0c;cpu的耐收温度为65度&#xff0c;按夏天最高35度来计算&#xff0c;则允许cpu温升为30度。按此类推&#xff0c;如果你的环境温度现在是20度&#xff…

applepay默认卡怎么设置(苹果手表设置Apple Apy默认卡片)

无论看到ApplePay标识或者银联云闪付符号&#xff0c;都可以使用通过iPhone使用ApplePay进行支付&#xff0c;将设备放在终端附近使用FaceID或TouchID验证即可交易。 但是使用AppleWatch会更加方便&#xff0c;只需要双侧侧面按钮&#xff0c;将AppleWatch的显示屏保持在NFC阅读…

苹果手表Apple Watch 无法检查更新 iOS14.5 14.6 14.7

检查更新软件失败&#xff0c;因为您尚未接入互联网。 我的情况是这样的&#xff0c;iOS14.5连接不了watch OS6的手表&#xff0c;更新就提示无法联网。 问题原因应该都是差不多的&#xff0c;经过了多次验证和确认才发的这个贴。问题基本都可以解决。 1.手机没有基于watch这个…

Apple Watch如何重新配对

Apple Watch 是苹果公司公布的一款智能手表&#xff0c;而且也是为健康生活而设计的强大设备&#xff0c;可以为你提供运动功能&#xff0c;还可以检测身体健康&#xff0c;Apple Watch 在使用的过程中&#xff0c;可能会需要取消与 iPhone 之间的配对的情况&#xff0c;那么 A…