日常工作中有时候会遇到Linux服务器上出现CPU负载过高的情况,影响程序的运行,一般的排除思路如下:

方法一:

  1. 使用top命令

然后按shift+p按照CPU排序,找到占用CPU过高的进程的pid

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# toptop - 15:18:21 up 10 days,  6:07,  1 user,  load average: 1.36, 1.55, 1.32
任务: 546 total,   1 running, 544 sleeping,   0 stopped,   1 zombie
%Cpu(s):  4.1 us,  1.4 sy,  0.0 ni, 94.4 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  15783.1 total,    225.3 free,   9583.5 used,   5974.3 buff/cache
MiB Swap:   2048.0 total,    923.0 free,   1125.0 used.   5403.6 avail Mem 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND
1194120 zph       20   0 2675864 163884  27852 S  37.7   1.0 801:42.88 resp
1187764 zph       20   0   10.4g 247872  85600 S  11.3   1.5 204:42.53 ynote-desktop                                                                                                                       4005 zph       20   0 7685196 742284 231580 S   9.9   4.6 998:07.78 gnome-shell
1187524 zph       20   0   16.6g 195948 157956 S   8.3   1.2  24:24.30 chrome
1187183 zph       20   0   17.0g 343324 187812 S   4.6   2.1  28:38.91 chrome                                                                                                                              3803 root      20   0  864388 558572 261488 S   4.3   3.5 193:00.09 Xorg
1850081 zph       20   0 2736288  83572  27296 S   3.6   0.5   9:02.04 ShiYeLine.exe
1662680 zph       20   0 3778160 323532  79952 S   2.3   2.0  39:23.77 sunloginclient
1723352 zph       20   0   14916  13216   1492 S   2.0   0.1  32:03.67 wineserver64      

2.使用top -H -p [进程id]

找到进程中消耗资源最高的线程的id

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# top -H -p 1194120top - 15:21:30 up 10 days,  6:10,  1 user,  load average: 2.09, 1.58, 1.36
Threads:  18 total,   1 running,  17 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us,  0.6 sy,  0.0 ni, 96.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15783.1 total,    253.0 free,   9591.9 used,   5938.3 buff/cache
MiB Swap:   2048.0 total,    923.0 free,   1125.0 used.   5411.6 avail Mem 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND
1885928 zph       20   0 2675864 163892  27852 R   8.3   1.0   0:00.25 qredisclient::t
1194120 zph       20   0 2675864 163892  27852 S   0.3   1.0   9:04.88 resp
1194259 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:16.59 QXcbEventQueue
1194260 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 QDBusConnection
1194261 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.03 QQmlThread
1194278 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 Qt bearer threa
1194279 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.25 QPythonWorker
1194280 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.01 QQuickPixmapRea
1199359 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t
1294047 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:15.49 qredisclient::t
1420987 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t
1425577 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.01 qredisclient::t
1425582 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t
1686855 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t
1701340 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.01 qredisclient::t
1701429 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t
1839931 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.95 qredisclient::t
1885932 zph       20   0 2675864 163892  27852 S   0.0   1.0   0:00.00 qredisclient::t

3.使用echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]

将需要的线程ID转换为16进制格式
bc是linux的计算器命令

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# printf “%x\n” 1194120
“123888n”

4.执行jstack [进程id] |grep -A 30 [线程id的16进制]”

查看线程状态信息
grep -A 30:
-A #:显示匹配到的字符串所在的行以及其后 # 行(After)
-B #:显示匹配到的字符串所在的行以及前 # 行(Before)
-C #:显示匹配到的字符串所在的行以及前后各 # 行(Contextt)

jstack 1194120|grep '3eb7' -A 10

方法二:

  1. 使用top命令

然后按shift+p按照CPU排序,找到占用CPU过高的进程的pid

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# toptop - 15:18:21 up 10 days,  6:07,  1 user,  load average: 1.36, 1.55, 1.32
任务: 546 total,   1 running, 544 sleeping,   0 stopped,   1 zombie
%Cpu(s):  4.1 us,  1.4 sy,  0.0 ni, 94.4 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  15783.1 total,    225.3 free,   9583.5 used,   5974.3 buff/cache
MiB Swap:   2048.0 total,    923.0 free,   1125.0 used.   5403.6 avail Mem 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND
1194120 zph       20   0 2675864 163884  27852 S  37.7   1.0 801:42.88 resp
1187764 zph       20   0   10.4g 247872  85600 S  11.3   1.5 204:42.53 ynote-desktop                                                                                                                       4005 zph       20   0 7685196 742284 231580 S   9.9   4.6 998:07.78 gnome-shell
1187524 zph       20   0   16.6g 195948 157956 S   8.3   1.2  24:24.30 chrome
1187183 zph       20   0   17.0g 343324 187812 S   4.6   2.1  28:38.91 chrome                                                                                                                              3803 root      20   0  864388 558572 261488 S   4.3   3.5 193:00.09 Xorg
1850081 zph       20   0 2736288  83572  27296 S   3.6   0.5   9:02.04 ShiYeLine.exe
1662680 zph       20   0 3778160 323532  79952 S   2.3   2.0  39:23.77 sunloginclient
1723352 zph       20   0   14916  13216   1492 S   2.0   0.1  32:03.67 wineserver64      

2.使用ps -mp pid -o THREAD,tid,time | sort -rn

获取线程信息,并找到占用CPU高的线程

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# ps -mp 1187524 -o THREAD,tid,time | sort -rn
zph       0.5  19    - do_sys    -      - 1187547 00:24:17
zph       0.5   -    - -         -      -       - 00:27:44
zph       0.0  19    - futex_    -      - 1208102 00:00:00
zph       0.0  19    - futex_    -      - 1187544 00:00:00
zph       0.0  19    - futex_    -      - 1187542 00:00:00
zph       0.0  19    - futex_    -      - 1187541 00:00:00
zph       0.0  19    - futex_    -      - 1187540 00:00:00
zph       0.0  19    - futex_    -      - 1187539 00:00:00
zph       0.0  19    - futex_    -      - 1187538 00:00:00
zph       0.0  19    - futex_    -      - 1187537 00:00:00
zph       0.0  19    - futex_    -      - 1187536 00:00:00
zph       0.0  19    - futex_    -      - 1187535 00:00:00
zph       0.0  19    - futex_    -      - 1187534 00:00:00
zph       0.0  19    - futex_    -      - 1187533 00:00:00
zph       0.0  19    - futex_    -      - 1187532 00:00:00
zph       0.0  19    - futex_    -      - 1187531 00:00:00
zph       0.0  19    - futex_    -      - 1187530 00:00:00
zph       0.0  19    - futex_    -      - 1187529 00:00:00
zph       0.0  19    - futex_    -      - 1187528 00:00:00
zph       0.0  19    - futex_    -      - 1187527 00:00:00
zph       0.0  19    - futex_    -      - 1187526 00:00:00
zph       0.0  19    - ep_pol    -      - 1187545 00:03:12
zph       0.0  19    - ep_pol    -      - 1187543 00:00:00
zph       0.0  19    - do_sys    -      - 1187524 00:00:12

3.使用echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]

将需要的线程ID转换为16进制格式

root@zph-IdeaCentre-GeekPro-14IOB:/home/git# printf “%x\n” 1194120
“123888n”

4.执行jstack [进程id] |grep -A 30 [线程id的16进制]”

查看线程状态信息
grep -A 30:
-A #:显示匹配到的字符串所在的行以及其后 # 行(After)
-B #:显示匹配到的字符串所在的行以及前 # 行(Before)
-C #:显示匹配到的字符串所在的行以及前后各 # 行(Contextt)

jstack 1194120|grep '3eb7' -A 10

Linux服务器CPU使用率过高排查与解决思路相关推荐

  1. linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  2. window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  3. Linux服务器CPU使用率过高

    前言 服务器使用率过高,导致,请求报错 分析 通过阿里云分析: 通过Linux命令查看原因 top 通过 top -Hp 进程号命令找到 CPU 消耗最多的线程号(列名仍然为 PID): top -H ...

  4. linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...

  5. java 监控linux服务器cpu使用率、内存使用率、磁盘使用率、java进程是否存活等服务

    java 监控linux服务器cpu.内存.java进程是否存活,发现异常发送邮件提醒 前一段时间在维护一个N年前的项目,这个项目有十几个服务器,每个服务器上有十几个服务.接手后的几个星期天天有事,要 ...

  6. (小技巧) 如何让Linux 机器CPU使用率变高

    由于测试需要,需要让机器的cpu使用率变高. 单行命令搞定 for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc ...

  7. Java应用CPU使用率过高排查

    1.使用top命令查看使用CPU过高的进程 top top - 14:16:06 up 27 min, 3 users, load average: 0.00, 0.01, 0.02 Tasks: 8 ...

  8. Linux下CPU使用率过高的排查方法

    在 Linux 系统下,使用 top 命令查看 CPU 使用情况. %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, ...

  9. linux 负载高 cpu低,Linux服务器CPU使用率较低但负载较高

    CPU使用率较低但负载较高 问题描述 Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高,如下图所示. 处理办法 load ...

最新文章

  1. 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN
  2. hdu 4046 Panda 线段树
  3. C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】
  4. Boost:组合异步操作的简单示例
  5. c语言深入浅出(一)strcpy和memcpy的区别
  6. IDA Pro7.0 使用技巧 总结
  7. 3.5链表----链表中元素的删除(只删除一个元素情况)
  8. 轨迹分析_肌力测试 心理测评 轨迹分析 科技助力体能训练 让备战更高效
  9. Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画
  10. 一年级大括号问题专项训练_新人教版一年级数学上册5.9解决问题(减法)微课视频辅导|课后练习...
  11. 如何更新Node.js?
  12. Spark 训练机器学习模型莫名报错(java.lang.stackoverflow)
  13. 高等数学(第七版)同济大学 习题3-2 个人解答
  14. java 异步写_Java异步编程实战
  15. 串口通讯 电脑和dsp_高速DSP与PC实现串口通信的方法
  16. iOS gzip解压
  17. libtorrent java_关于libtorrent库的安装
  18. A,B,C,D,E五个人在某天夜里去捕鱼
  19. 【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文详解
  20. 操作的基本原则,每日必读【不断更新中】

热门文章

  1. google浏览器显示页面显示不完整bug
  2. 北大计算机陈鹏,陈鹏(北大教授)
  3. 基于Rsoft进行单模光纤的基模计算
  4. Android 图片选择库美哭了
  5. Android--简单电子木鱼开发详解
  6. 【牛客刷题】java编程笔试题(更新)
  7. matlab premnmx归一化函数的使用
  8. 林大师讲区块链之信任机制
  9. php+vue 南天在线求助系统
  10. anycast隧道_隧道服务器是什么意思