美文网首页@IT·互联网
一次CPU高负载问题排查

一次CPU高负载问题排查

作者: bloke_anon | 来源:发表于2018-01-30 10:34 被阅读298次

记一次DRBD故障后发现的CPU高负载


  • 故障发现时间: 2018-01-29 11:50

    IPCDN的DRBD资源发生脑裂

  • 故障解决时间: 2018-01-29 13:05
    • 登录IPCDN,查看DRBD状态为:Primary/Unknown Secondary/Unknown

    • 首先恢复drbd

    主节点执行:drbdadm connect r0

    备节点执行:drbdadm -- --discard-my-data connect r0


之后查看corosync日志发现:High CPU load detected: 7.930000

  • 查看CPU负载,平均值达到 7
$ uptime

load average: 7.04, 7.02, 7.00
  • 使用top查看,CPU、Memory、Swap 都是富余的
Cpu(s):  8.2%us,  1.3%sy,  0.0%ni, 86.0%id,  4.5%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  16334156k total, 15629136k used,   705020k free,   357016k buffers
Swap:  8388604k total,     5908k used,  8382696k free, 14354732k cached
  • CPU Load高,但是CPU使用率不高,内存和swap也够用,考虑到是否是IO问题,使用iostat查看,发现iowait很高,但是当前所有的磁盘很闲:
$ iostat -x 1 6

Linux 2.6.32-504.el6.x86_64 (IPCDN1)    01/29/2018  _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.19    0.00    1.35    4.46    0.00   86.01

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     1.78    0.01    1.07     5.12    23.49    26.42     0.00    0.80   0.40   0.04
sdb               0.00     1.19    0.00    0.82     0.25    21.75    26.76     0.00    0.58   0.17   0.01
drbd0             0.00     0.00    0.00    0.11     0.00     0.79     7.23     0.00    1.15   0.45   0.00
drbd1             0.00     0.00    0.00    0.01     0.03     0.05    10.39     0.00   22.99   0.19   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.25   24.94    0.00   74.56

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd0             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd1             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.00   25.00    0.00   74.75

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd0             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd1             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

  • 再次使用top命令查看,通过 CPU使用时间 排序,除了Tianshan常用进程,发现一个 rsync 进程,使用 ps 搜索 rsync
$ ps -ef | grep rsync

root     24215     1  0  2017 ?        00:00:00 [rsync]
  • 进程状态为 D,代表 I/O资源得不到满足,而引发的等待,这种进程使用kill命令无法杀掉
  • 进程名带方括号 [],代表ps命令 无法获取此进程的信息,往往代表已经死亡

此时想到,之前为了方便查看日志,有一个拷贝日志到测试系统的动作,大网通过挂载测试系统的nfs共享,然后将日志通过rsync同步到挂载设备中以完成拷贝,但是之前因为虚拟机调动,挂载丢失,只是手动在大网上将挂载的设备卸载掉,并没有将rsync进程杀掉,所以就出现了内容在等待写入磁盘,但是磁盘已经丢失,进程无人接管,被init收留,变为怨妇 [D]。

++此时不能重启系统,最有效方法是恢复挂载连接,让没有写完的数据写完++

$ mount -t nfs lab_machine:/share /mnt
  • 之后查看日志、负载、io恢复正常
$ tail /var/log/cluster/corosync.log

Jan 29 16:37:35 [24904] IPCDN1       crmd:     info: throttle_handle_load:      Moderate CPU load detected: 6.050000
Jan 29 16:37:35 [24904] IPCDN1       crmd:     info: throttle_send_command:     Updated throttle state to 0010
Jan 29 16:38:05 [24904] IPCDN1       crmd:     info: throttle_send_command:     Updated throttle state to 0000

$ uptime

load average: 0.00, 0.00, 0.06

$ iostat -x 1 2

[root@IPCDN1 ~]# iostat -x 1
Linux 2.6.32-504.el6.x86_64 (IPCDN1)    01/29/2018  _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.19    0.00    1.35    4.46    0.00   86.01

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     1.78    0.01    1.07     5.11    23.49    26.42     0.00    0.80   0.40   0.04
sdb               0.00     1.19    0.00    0.82     0.25    21.75    26.76     0.00    0.58   0.17   0.01
drbd0             0.00     0.00    0.00    0.11     0.00     0.79     7.23     0.00    1.15   0.45   0.00
drbd1             0.00     0.00    0.00    0.01     0.03     0.05    10.39     0.00   22.99   0.19   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.25    0.00    0.00   99.50

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd0             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
drbd1             0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

虽然是自己之前埋得坑,但也是很好的一次分析查找过程,遂记录


相关文章

  • 一次CPU高负载问题排查

    记一次DRBD故障后发现的CPU高负载 故障发现时间: 2018-01-29 11:50IPCDN的DRBD资源发...

  • CPU高负载排查

    1.找到最耗cpu的进程 工具:top 方法:1. top -c 2.键入P(大写),进程按照CPU的使用...

  • CPU负载过高问题排查

    1、找到最耗CPU的进程 top -c ,显示进程运行信息列表 2、找到最耗CPU的线程 top -Hp [pid...

  • cpu负载突刺问题排查

    现象: 通过监控工具巡检自己的服务发现服务cpu load存在周期性变高的现象,如图: 机器的cpu核数是4核,最...

  • 排查java-CPU使用率高的问题

    记录一次线上排查CPU使用高的问题 使用top命令找到占用CPU高的进程PID 显示线程列表 使用 找到占用CPU...

  • 排查MongoDB CPU使用率高的问题

    排查MongoDB CPU使用率高的问题

  • Linux 命令检查服务器性能

    概述 简单通过查询服务器负载、内存、CPU、IO等指标进行排查问题 相关命令 uptime pidstat ps ...

  • Linux系统排查2——CPU负载篇

    本随笔介绍CPU负载的排查手段。 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或...

  • 机器CPU高问题排查

    top找到占用CPU资源的进程top.png 要查看java程序在做什么事情,用jstack命令dump出java...

  • JVM CPU高问题排查

    好好地码代码呢,突然接到线上的告警,说是CPU飙高。然后就稀里哗啦的连上线上的服务器,使用top命令查看了一下CP...

网友评论

    本文标题:一次CPU高负载问题排查

    本文链接:https://www.haomeiwen.com/subject/msbqzxtx.html