我应该如何调整Ubuntu服务器以适应许多高内存的phpcli进程,这些进程使用良好的硬件会导致高负载



我在VMWare VSphere中运行的Ubuntu服务器上通过crontab运行了许多phpcli脚本。PHP脚本占用了大量内存(同时修复了这一问题),但它们似乎应该拥有这个VM所需的资源。使用高性能8核和120G冲压箱,平均负载在100+范围内非常高。当我看到时,我很困惑为什么负载很高

  1. 大量可用内存
  2. 不交换
  3. top报告80+CPU空闲

环境信息:

#uname -a
Linux tasks 3.0.0-2-amd64 #1 SMP Fri Oct 7 20:48:45 UTC 2011 x86_64     GNU/Linux

以下项目已在sysctl中进行了调整:

#head /etc/sysctl.conf
fs.file-max = 2097152
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2

顶部

top - 10:51:27 up 219 days, 21:50,  3 users,  load average: 190.18, 171.37, 152.70
Tasks: 400 total, 179 running, 220 sleeping,   0 stopped,   1 zombie
%Cpu(s): 11.4 us,  1.7 sy,  0.0 ni, 86.2 id,  0.4 wa,  0.0 hi,  0.3 si,  0.0 st
Mb Mem:    121121 total,    51993 used,    69128 free,       17 buffers
Mb Swap:     6257 total,        0 used,     6257 free,      532 cached
PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                  
10551 root      20   0  557m 282m  11m R   1.7  0.2   0:05.83 php                      
6204 root      20   0  555m 286m  10m R   1.0  0.2   0:07.41 php                      
16516 root      20   0  408m 140m 9744 R   1.0  0.1   0:03.34 php                      
24167 root      20   0  309m  41m 9784 R   1.0  0.0   0:00.63 php                      
45041 root      20   0 1894m 1.6g  10m R   1.0  1.3   7:27.72 php                      
599 root      20   0  521m 254m  10m R   0.7  0.2   0:09.26 php                      
1101 root      20   0  357m  89m 9796 R   0.7  0.1   3:46.28 php                      
3273 root      20   0 3342m 3.0g 9756 R   0.7  2.5   3:50.18 php                      
3958 root      20   0  536m 268m  10m R   0.7  0.2   0:08.28 php                      
4798 root      20   0  780m 508m 9756 R   0.7  0.4   0:08.26 php                      
5464 root      20   0  532m 256m  10m R   0.7  0.2   0:08.03 php                      
5905 root      20   0  536m 268m  10m R   0.7  0.2   0:07.42 php                      
6913 root      20   0  557m 288m  10m R   0.7  0.2   0:06.89 php                      
7028 root      20   0 2147m 1.8g 9792 R   0.7  1.6   0:32.89 php                      
8535 root      20   0  431m 156m  10m R   0.7  0.1   0:06.77 php                      
8745 root      20   0 2836m 2.5g  10m R   0.7  2.1   4:46.24 php                      
9224 root      20   0  538m 269m  10m R   0.7  0.2   0:06.36 php                      
10665 root      20   0  745m 473m 9752 R   0.7  0.4   0:05.96 php                      
12313 root      20   0  760m 490m 9752 R   0.7  0.4   0:05.15 php                      
12340 root      20   0  944m 675m 9752 R   0.7  0.6   0:05.15 php                      

vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
191  1      0 70536200  18216 546040    0    0     0    32 3007 2381 13  2 85  0
187  0      0 70567328  18216 546068    0    0     0     4 2840 2468 12  1 86  0
184  0      0 70650144  18216 546096    0    0     0     0 3802 2655 10  2 88  0
186  0      0 70642768  18216 546120    0    0     0     0 4456 2431 13  1 86  0
186  0      0 70630560  18216 546144    0    0     0     0 4936 2629 15  2 83  0
185  1      0 70620504  18224 546152    0    0     0    32 4584 2459 12  2 86  0
183  0      0 70611000  18224 546192    0    0     0     4 3820 2827  9  2 89  0
190  1      0 70643592  18224 546260    0    0     0     0 4093 3350 12  3 84  1
191  0      0 71065760  18224 546304    0    0     0     0 3745 2503 12  3 84  0
191  4      0 71041560  18224 546332    0    0     0     0 3314 2798 13  2 85  0
187  0      0 71028392  18224 546332    0    0     0     0 3280 3140 12  2 86  0
195  0      0 71015808  18236 546360    0    0     4   240 3164 2945 14  2 84  0
196  0      0 71002112  18236 546388    0    0     0     0 3136 3004  9  2 89  0
194  0      0 70999600  18236 546416    0    0     0     0 3576 3348 14  2 83  0
187  1      0 70994792  18236 546436    0    0     0     0 3362 3193 13  2 85  0
188  0      0 70979392  18236 546448    0    0     0     0 2870 3054 10  2 88  0

我还应该查看哪些其他工具或设置?

UPDATE运行htop我可以看到一个核心处理所有PHP进程。虚拟机或操作系统上是否有控制此操作的设置?

您的平均负载与预期完全一样-

您有100多个进程正在运行。他们都在同一时间跑步。因此,您的平均负载应该是100+。

这是"机器上现在发生了多少事情"的一个非常粗略的指标——答案是——很多!现在有100个进程同时运行。

当您的进程正在等待I/O请求完成时,它们被视为"未运行",因此您的平均负载会更低。

在我看来,一切都在按预期进行!除了它们都在同一个CPU上运行。

但是,如果它们都在不同的CPU上运行,那么您的平均负载将是相同的。您的CPU使用率(总计)会更高。

现在,如果你正在运行的各种进程花费的时间太长,那就另当别论了。但是,你的平均负荷仍然很高。

至于另一个故障排除工具,你可以在顶部键入"1",它应该会显示你所有CPU的突破。

"iostat"是一个很好的工具,可以查看您是否受到I/O约束。我怀疑你是谁;因为你的平均负载很高(你会在"wa"中看到更高的百分比,意思是"等待")。例如,如果您尝试类似"iostat 5"的操作,您将每5秒刷新一次I/O使用情况。如果你看到你的一个磁盘被摔坏了,你可以尝试修复它,可以用代码,也可以用更快的磁盘,或者RAID,或者缓存,或者类似的东西。

最新更新