apache2 进程过多导致 Web 服务器停止响应

apache2 进程过多导致 Web 服务器停止响应

我有一台 512MB RAM 的 VPS,我认为 apache2 正在搞垮它!我无法从服务器加载页面(使用浏览器)、访问 FTP 或 SSH。VPS 真的停止响应。我只在它上面运行 apache2、php 和 MySQL,这台机器只用于托管一个 wordpress 博客。

顶部 显示以下内容:

top - 03:17:59 up 22:31,  1 user,  load average: 60.54, 44.38, 23.35
Mem:    498320k total,   420888k used,    77432k free,      388k buffers
Swap:  2096124k total,  2094196k used,     1928k free,    14068k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18312 www-data  20   0  171m  15m  828 D    0  3.1   0:00.44 apache2
18305 www-data  20   0  170m  13m  992 D    0  2.8   0:00.48 apache2
18273 www-data  20   0  170m  13m 1008 R    0  2.8   0:00.41 apache2
18314 www-data  20   0  171m  13m  784 D    0  2.7   0:00.38 apache2
18307 www-data  20   0  171m  12m  668 D    0  2.6   0:00.40 apache2
18267 www-data  20   0  177m  11m  892 D    0  2.3   0:01.23 apache2
18248 www-data  20   0  177m  10m  872 D    0  2.2   0:02.29 apache2
17955 www-data  20   0  213m  10m  796 D    3  2.1   0:04.76 apache2
18053 www-data  20   0  216m 9964  812 D    0  2.0   0:02.48 apache2
18288 www-data  20   0  173m 9828  572 D    0  2.0   0:01.22 apache2
18237 www-data  20   0  177m 9256  936 D    0  1.9   0:02.13 apache2
18174 www-data  20   0  199m 8784  932 D    0  1.8   0:01.68 apache2
18167 www-data  20   0  199m 8656  904 D    0  1.7   0:02.58 apache2
18183 www-data  20   0  187m 7992  784 D    1  1.6   0:00.97 apache2
18309 www-data  20   0  177m 7876  860 D    0  1.6   0:00.58 apache2
17688 www-data  20   0  217m 7820   24 D    0  1.6   0:08.12 apache2
18170 www-data  20   0  157m 7688  892 D    0  1.5   0:00.40 apache2
18239 www-data  20   0  175m 7684  656 S    0  1.5   0:00.64 apache2
18060 www-data  20   0  195m 7528  920 D    0  1.5   0:01.17 apache2
18204 www-data  20   0  182m 7240 1048 D    1  1.5   0:00.87 apache2
18245 www-data  20   0  175m 7192  644 S    0  1.4   0:00.62 apache2
18232 www-data  20   0  175m 7076  540 D    0  1.4   0:02.52 apache2
18240 www-data  20   0  177m 7028  912 D    1  1.4   0:02.10 apache2
18168 www-data  20   0  180m 6848  960 D    0  1.4   0:01.71 apache2
18306 www-data  20   0  177m 6688  628 D    0  1.3   0:01.89 apache2
18244 www-data  20   0  171m 6588  480 D    0  1.3   0:00.58 apache2
18250 www-data  20   0  177m 5884  896 D    1  1.2   0:03.02 apache2
18176 www-data  20   0  201m 5848  848 D    0  1.2   0:01.22 apache2
18246 www-data  20   0  175m 5400  832 D    0  1.1   0:00.67 apache2
18178 www-data  20   0  201m 5080  860 D    0  1.0   0:02.51 apache2
18365 www-data  20   0  153m 5028  976 D    1  1.0   0:00.10 apache2
18313 www-data  20   0  153m 4944  980 D    1  1.0   0:00.17 apache2
17796 www-data  20   0  218m 4724  808 D    0  0.9   0:05.02 apache2
17681 www-data  20   0  218m 4448  452 D    1  0.9   0:06.90 apache2
17692 www-data  20   0  223m 4228  856 D    0  0.8   0:08.23 apache2
17690 www-data  20   0  217m 4052  656 D    0  0.8   0:09.07 apache2
17680 www-data  20   0  223m 3976   68 D    0  0.8   0:04.86 apache2
17789 www-data  20   0  213m 3852  636 D    0  0.8   0:07.20 apache2
17899 www-data  20   0  225m 3852  588 S    0  0.8   0:02.89 apache2
17676 www-data  20   0  218m 3812  400 D    1  0.8   0:11.65 apache2
17685 www-data  20   0  218m 3760  604 D    0  0.8   0:07.79 apache2
17963 www-data  20   0  226m 3456  424 S    0  0.7   0:04.27 apache2
17946 www-data  20   0  226m 3452   72 D    0  0.7   0:08.25 apache2
18363 www-data  20   0  151m 3376  812 D    0  0.7   0:00.06 apache2
17953 www-data  20   0  224m 3244   76 D    0  0.7   0:05.16 apache2
17764 www-data  20   0  218m 3152   12 D    0  0.6   0:11.63 apache2
18251 www-data  20   0  152m 3036  720 D    0  0.6   0:00.44 apache2
18003 www-data  20   0  216m 2856   20 D    0  0.6   0:05.80 apache2
18368 www-data  20   0  151m 2812  788 D    0  0.6   0:00.06 apache2
18013 www-data  20   0  216m 2808   24 D    0  0.6   0:03.16 apache2
18283 www-data  20   0  152m 2744  860 D    0  0.6   0:00.24 apache2
17794 www-data  20   0  216m 2696   28 D    0  0.5   0:06.49 apache2

Apache2.conf: http://pastebin.com/nGtAR4Dk /etc/php5/apache2/php.ini: http://pastebin.com/mjPSbH0t

我需要做哪些改变才能让 apache2 使用更少的机器资源?

谢谢。

答案1

降低MaxClients到一定程度,很多一开始就低于 150。根据 Apache 进程的大小,我会从 10 或 20 开始。这至少可以防止程序定期死机。

然后,您可以开始考虑减少这些进程的内存占用,方法是删除不需要的 PHP 和 Apache 模块。考虑到您的内存限制和明显的负载,我认为您几乎肯定会从切换到 worker MPM 和外部 PHP 运行器,或者(如果您真的很有冒险精神)完全放弃 Apache 并使用 nginx 中获得巨大好处。这样做的好处因您提供的静态文件比例而异,但我一直认为“每个 Apache 进程都需要运行 PHP 副本”模型存在相当致命的缺陷。

相关内容