如何在Ubuntu服务器上find我的高负载问题的来源?

我们有一个Ubuntu 10.4 VPS服务Rails网站,经常显示相当高的负载,但没有高CPU或内存的数量。 在服务器故障这里读了很多其他的问题 ,告诉我这是一个I / O问题 (即有些进程被卡在I / O等待状态,从而导致负载上升)。 我试图追查这些过程 ,但没有太多的运气。 我会很感激帮助:(a)识别有罪过程的方法,和/或(b)确认我提出正确的问题。

这里是top的快照:

顶部 -  18:28:49最多5天,3:7,2个用户,平均负载:1.79,1.83,1.73
任务:总共82个,1个跑步,81个睡眠,0个停止,0个僵尸
 Cpu:0.0%us,0.3%sy,0.0%ni,99.6%id,0.0%wa,0.0%hi,0.0%si,0.1%st
 Mem:总共1794980k,使用1780384k,14596k免费,13356k缓冲
 Swap:总共524284k,使用3116k,免费521168k,caching1012272k

注意低交换,CPU大多闲置; 这就是为什么我认为我们是I / O绑定,而不是内存或CPU绑定。

这里是iostat (我混淆了服务器名称):

 $ iostat -x 1 3
 Linux 2.6.35.2-xenU(our.server.com)03/25/11 _x86_64_(2 CPU)

 avg-cpu:%user%nice%system%iowait%steal%idle
            1.75 0.19 0.50 0.31 0.01 97.24

设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util
 xvdap1 0.01 11.52 2.19 3.18 145.12 117.55 48.97 0.08 15.60 1.67 0.90
 xvdap9 0.01 0.01 0.00 0.00 0.10 0.14 62.62 0.00 13.20 6.09 0.00

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

设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util
 xvdap1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 xvdap9 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.00 0.00 0.00 0.00 0.00 100.00

设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util
 xvdap1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 xvdap9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

iotop不会在这个盒子上运行:

 $ iotop
由于某些要求未得到满足,无法运行iotop:
 - 支持I / O计费的Linux> = 2.6.20(CONFIG_TASKSTATS,CONFIG_TASK_DELAY_ACCT,CONFIG_TASK_IO_ACCOUNTING):未find
 -  Python> = 2.5或Python 2.4与ctypes模块:find

ps很less在D状态find任何进程:

 $ sudo ps -eo pid,user,state,cmd |  awk'$ 3〜/ D / {print $ 0}'
   976根D [kjournald]
 $ sudo ps -eo pid,user,state,cmd |  awk'$ 3〜/ D / {print $ 0}'
 $ sudo ps -eo pid,user,state,cmd |  awk'$ 3〜/ D / {print $ 0}'
 $ 

我下一个故障排除步骤是什么?

ETA:我跑了vmstat

 $ vmstat
 procs -----------内存---------- --- swap-- ----- io -----system-- ---- cpu-- - 
  rb swpd免费的buffcachingsi所以在我们sy sy洼
  0 0 3116 509372 22880 773232 0 0 18 15 24 14 2 0 97 0

0的wa值使我怀疑I / O是否真的是问题。

另外,是的,我知道在1.x范围内的负载不是一个真正的问题 – 但是这个应用程序有一个历史的负载,直到它呛,如果我可以跟踪来源,而仍然有低烧我可能免于死亡(折磨一个隐喻)。

我会build议search任何非S睡眠状态。 尽pipe没有真正做任何事情,但你可能有僵尸进程可以算作正在运行的东西。 ps -eo pid,user,state,cmd | awk '$3 !~ /S/ {print $0}' ps -eo pid,user,state,cmd | awk '$3 !~ /S/ {print $0}'这将显示任何非睡眠进程。 (运行,等待IO,僵尸等)

值得注意的是,你的平均负载并不令人震惊。 假设你的盒子上有两个以上的内核,毫无疑问,CPU的功率很大。 但是,如果你不希望1-2个进程在任何时候运行,显然还是值得一看。

– 克里斯托弗·卡雷尔