一次CPU高负载问题排查


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


一次CPU高负载问题排查_第1张图片
  • 故障发现时间: 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高负载问题排查)