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

这篇具有很好参考价值的文章主要介绍了Linux服务器CPU使用率过高排查与解决思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

方法一:

  1. 使用top命令

然后按shift+p按照CPU排序,找到占用CPU过高的进程的pid
root@zph-IdeaCentre-GeekPro-14IOB:/home/git# top

top - 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 1194120

top - 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# top

top - 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

文章来源地址https://www.toymoban.com/news/detail-812197.html

到了这里,关于Linux服务器CPU使用率过高排查与解决思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux提高CPU及内存使用率的脚本

    测试或运维中,有时会特意提高CPU及内存使用率,观察运行情况,以下脚本供参考。 链接1: Linux tmpfs及消耗内存脚本 链接2: Linux 中的 /dev/null 和 /dev/zero 链接3: Linux 提高CPU占用率的脚本

    2024年02月13日
    浏览(36)
  • 如何提升Linux服务器cpu利用率

        目录 一、安装cpulimit和相关依赖包 1. 安装cpulimit 2. 编写提升cpu利用率脚本,并执行         如何有效提升服务器器CPU利用率,可以通过自定义脚本结合cpulimit达到提升利用率和控制到目标值。 1. 安装cpulimit ##1. 安装cpulimit  yum install -y cpulimit ##2. 安装依赖包 yum -y inst

    2024年02月10日
    浏览(50)
  • linux top命令中 cpu 利用率/mem 使用率与load average平均负载计算方式

    top 命令是 Linux 上一个常用的系统监控工具,它经常用来监控 Linux 的系统状态,是常用的性能分析工具,能够显示较全的系统资源信息,包括系统负载,CPU 利用分布情况,内存使用,进程资源占用情况等。 如下示例: 这里主要看进程的 CPU%, MEM% 和 load averge 字段。 该字段指

    2024年02月03日
    浏览(42)
  • 服务器CPU使用过高的原因

    大多使用服务器的站长都会碰见这样的问题,在长时间使用后,系统越来越慢,甚至出现卡死或强制重启的情况。打开后台 才发现,CPU使用率已经快要到达90%。那么,我告诉你哪些因素会导致服务器CPU高使用率,从而严重影响运行 速度与效率。 一、硬件方面CPU不能过热这是

    2024年04月27日
    浏览(34)
  • linux获取内存与cpu使用率(附有C语言源码与shell脚本)

    linux内核提供了一种通过/proc文件系统来在运行时访问内核内部数据结构,改变内核设置的机制,各种硬件平台上的linux系统的/proc文件系统的基本概念都是相同的。 /proc文件系统是一种内核和内核模块用来向进程发送信息的机制。这个伪文件系统可以和内核内部的数据结构进

    2024年02月06日
    浏览(32)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(48)
  • python-在系统托盘显示CPU使用率和内存使用率

    一、添加轮子 1.添加托盘区图标库  infi.systray 2.添加图像处理库  Pillow 3.添加  psutil  来获取CPU、内存信息 二、完整代码 三、实际效果展示

    2024年02月05日
    浏览(47)
  • 测试:虚拟机查看CPU使用率

    Windows虚拟机 任务管理器 : 在虚拟机中,您可以打开任务管理器(Ctrl + Shift + Esc),然后在“进程”标签下查看CPU使用率。 PowerShell : 使用PowerShell命令 Get-VM | Select-Object Name, CPUUsage 可以查询虚拟机的CPU使用率。 VMware vSphere Client : 如果您的虚拟机运行在VMware环境中,可以使用

    2024年02月01日
    浏览(56)
  • CPU 使用率和负载Load

    优质博文:IT-BLOG-CN CPU 使用率是 CPU 处理非空闲任务所花费的时间百分比 。例如单核 CPU 1s 内非空闲态运行时间为 0.8s ,那么它的 CPU 使用率就是 80% ;双核 CPU 1s 内非空闲态运行时间分别为 0.4s 和 0.6s ,那么,总体 CPU 使用率就是 (0.4s + 0.6s) / (1s * 2) = 50% ,其中 2 表示 CPU 核数

    2024年02月03日
    浏览(40)
  • qt使用QCustomplot绘制cpu和内存使用率图

                QCustomPlot是一个开源的Qt C++图表库,用于可视化数据。该库提供了多种类型的可定制的图表,包括散点图、线图、柱状图和等高线图等。它还支持自定义绘制,可以创建任意形状和大小的元素,并使其与其他元素交互。QCustomPlot易于集成到现有的Qt应用程序中

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包