我有一个VPS托管一个小型的网络应用程序(apache,PHP-fpm,mysql),由于流量非常低,现在大部分都是空闲的.
令人惊讶的是,平均负载总是> = 3.00:
# uptime 02:20:00 up 69 days,6:03,1 user,load average: 3,04,3,05@H_403_5@我已经看了好几个星期了,结果把这个3.00视为我的0.00. cpu使用率接近0%,服务器速度与我预期的一样快,并且没有其他服务器负载迹象.
但是,这仍然激起了我的好奇心.什么可以导致这个永久负载平均值?
top显示空闲服务器:
top - 02:25:56 up 69 days,6:09,07,05 Tasks: 218 total,1 running,216 sleeping,0 stopped,1 zombie %cpu(s): 0,0 us,3 sy,0 ni,99,7 id,0 wa,0 hi,0 si,0 st KiB Mem : 3878668 total,165660 free,1187816 used,2525192 buff/cache KiB Swap: 4079612 total,3810976 free,268636 used. 2132052 avail Mem PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND 2200 root 20 0 0 0 0 S 0,3 0,0 0:00.02 kworker/0:0 26243 MysqL 20 0 3297012 702988 7740 S 0,3 18,1 248:38.28 MysqLd 1 root 20 0 188692 3456 2076 S 0,0 0,1 12:30.25 systemd 2 root 20 0 0 0 0 S 0,0 0:03.11 kthreadd 3 root 20 0 0 0 0 S 0,0 1:31.56 ksoftirqd/0 5 root 0 -20 0 0 0 S 0,0 0:00.00 kworker/0:+ 7 root rt 0 0 0 0 S 0,0 0:01.09 migration/0 8 root 20 0 0 0 0 S 0,0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/0 10 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/1 11 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/2 12 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/3 13 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/4 14 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/5 15 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/6 16 root 20 0 0 0 0 S 0,0 0:00.00 rcuob/7@H_403_5@我读过这个问题:CPU 100% idle but still showing load average但它没有帮助.
这可能是虚拟化服务器的副作用吗?
编辑:iostat输出:
# iostat -x 1 20 Linux 3.10.0-327.10.1.el7.x86_64 (centos02) 07/06/2016 _x86_64_ (2 cpu) avg-cpu: %user %nice %system %iowait %steal %idle 6,23 0,00 0,32 0,00 93,13 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 0,15 0,05 7,53 1,57 79,92 21,50 0,08 10,76 12,29 10,75 3,93 2,98 dm-0 0,04 0,01 0,14 8,03 842,38 6,66 908,04 0,35 0,00 dm-1 0,02 5,64 0,98 73,38 26,26 0,06 11,03 14,83 11,02 5,19 2,94 dm-2 0,03 0,09 0,57 6,39 112,18 0,05 370,36 10,75 482,51 4,09 0,05 avg-cpu: %user %nice %system %iowait %steal %idle 3,00 1,52 0,00 95,45 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 1,00 9,00 64,00 14,22 0,05 5,33 0,00 5,33 5,11 4,60 dm-0 0,00 0,00 8,00 16,05 6,12 0,00 6,12 5,75 4,60 dm-2 0,00 avg-cpu: %user %nice %system %iowait %steal %idle 0,50 0,50 1,01 0,00 97,99 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 53,47 0,00 728,71 27,22 4,04 0,00 4,04 3,74 20,00 dm-0 0,00 39,60 0,71 36,80 0,22 5,45 0,45 5,05 20,00 dm-2 0,51 0,00 99,49 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 5,33 0,03 4,17 0,17 4,17 2,50 dm-0 0,00 8,03 6,25 0,25 6,25 2,50 dm-2 0,50 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 16,00 104,00 13,13 8,25 0,62 1,00 15,87 0,80 0,80 0,67 1,00 100,00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 avg-cpu: %user %nice %system %iowait %steal %idle 2,54 0,02 0,00 96,00 29,00 736,00 50,76 0,28 9,69 0,69 2,28 6,00 avg-cpu: %user %nice %system %iowait %steal %idle 1,00 3,00 12,02 6,33 6,33 1,90 dm-0 0,00 2,02 9,50 9,50 1,90 dm-2 0,01 7,00 7,00 7,70 dm-0 0,70 dm-2 0,98 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 98,00 19,00 588,00 61,89 0,07 3,58 0,58 1,74 3,30 dm-0 0,00 20,00 58,45 1,65 3,30 dm-2 0,00@H_403_5@编辑:
# ps -ALo stat,pid,comm | egrep '^(R|D)' Dsl 857 prltoolsd Dsl 857 prltoolsd Dsl 857 prltoolsd R+ 2307 ps@H_403_5@
解决方法
从ps -ALo stat,comm |的输出egrep’^(R | D)’,似乎你在不间断睡眠(D状态)中有三个进程.由于计算loadavg时Linux计数处于D状态,因此这三个prltoolsd进程可能是负载平均值相对较高的原因.
从谷歌搜索来看,似乎prltoolsd是“Parallels Tools”套件的一部分,它是托管图像的某种客户添加物.当他们在内核级系统调用(即:不间断睡眠)中睡觉时,也许他们正在监听“假”设备以允许主机系统与客户系统通信,因此3.0负载平均值.
如果您想确定它们是问题的原因,请停止prltoolsd进程和/或卸载工具.无论如何,我强烈怀疑你可以完全忽略它们和3.0负载平均值……