Linux服务器CPU使用率过高排查与解决思路
日常工作中有时候会遇到Linux服务器上出现CPU负载过高的情况,影响程序的运行,一般的排除思路如下:
方法一:
使用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
方法二:
使用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使用率过高排查与解决思路相关推荐
- linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路
发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...
- window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路
发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...
- Linux服务器CPU使用率过高
前言 服务器使用率过高,导致,请求报错 分析 通过阿里云分析: 通过Linux命令查看原因 top 通过 top -Hp 进程号命令找到 CPU 消耗最多的线程号(列名仍然为 PID): top -H ...
- linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高
tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...
- java 监控linux服务器cpu使用率、内存使用率、磁盘使用率、java进程是否存活等服务
java 监控linux服务器cpu.内存.java进程是否存活,发现异常发送邮件提醒 前一段时间在维护一个N年前的项目,这个项目有十几个服务器,每个服务器上有十几个服务.接手后的几个星期天天有事,要 ...
- (小技巧) 如何让Linux 机器CPU使用率变高
由于测试需要,需要让机器的cpu使用率变高. 单行命令搞定 for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc ...
- 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 ...
- 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, ...
- linux 负载高 cpu低,Linux服务器CPU使用率较低但负载较高
CPU使用率较低但负载较高 问题描述 Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高,如下图所示. 处理办法 load ...
最新文章
- 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN
- hdu 4046 Panda 线段树
- C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】
- Boost:组合异步操作的简单示例
- c语言深入浅出(一)strcpy和memcpy的区别
- IDA Pro7.0 使用技巧 总结
- 3.5链表----链表中元素的删除(只删除一个元素情况)
- 轨迹分析_肌力测试 心理测评 轨迹分析 科技助力体能训练 让备战更高效
- Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画
- 一年级大括号问题专项训练_新人教版一年级数学上册5.9解决问题(减法)微课视频辅导|课后练习...
- 如何更新Node.js?
- Spark 训练机器学习模型莫名报错(java.lang.stackoverflow)
- 高等数学(第七版)同济大学 习题3-2 个人解答
- java 异步写_Java异步编程实战
- 串口通讯 电脑和dsp_高速DSP与PC实现串口通信的方法
- iOS gzip解压
- libtorrent java_关于libtorrent库的安装
- A,B,C,D,E五个人在某天夜里去捕鱼
- 【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文详解
- 操作的基本原则,每日必读【不断更新中】