记一次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
虽然是自己之前埋得坑,但也是很好的一次分析查找过程,遂记录