我有一个 VPS(非托管,Ubuntu 10.04.3 LTS),似乎每隔几天就会崩溃一次。我相当确定这是由 Apache2 引起的,因为重新启动服务(当我有机会时)确实解决了该问题。
在机器崩溃之前,服务器会陷入瘫痪,甚至无法再输入任何命令,但我的 SSH 连接仍然处于活动状态,并且偶尔会有一个字符通过。
我猜想这可能与内存有关,但在我迁移到此 VPS 之前,我在一台“较差”的机器上也使用了相同的配置,从未遇到任何问题。希望有人能帮助找出此问题的根源。
自由的输出:
total used free shared buffers cached
Mem: 1754060 1708164 45896 0 25372 138436
-/+ buffers/cache: 1544356 209704
Swap: 1959924 97616 1862308
ps -auxw | grep apache2输出:
root 845 0.0 3.9 402300 68536 ? Ss 07:13 0:01 /usr/sbin/apache2 -k start
www-data 1366 0.4 6.5 445084 115336 ? S 07:38 1:58 /usr/sbin/apache2 -k start
www-data 1524 0.3 6.4 442536 112524 ? S 07:44 1:53 /usr/sbin/apache2 -k start
www-data 4219 0.4 6.4 441244 112876 ? S 10:22 1:27 /usr/sbin/apache2 -k start
www-data 4571 0.4 6.1 438284 108632 ? S 10:42 1:13 /usr/sbin/apache2 -k start
www-data 5476 0.4 6.3 441448 111252 ? S 11:35 1:04 /usr/sbin/apache2 -k start
www-data 5740 0.4 6.4 442128 113164 ? S 11:53 1:03 /usr/sbin/apache2 -k start
www-data 5741 0.4 6.3 441360 111712 ? S 11:53 0:56 /usr/sbin/apache2 -k start
www-data 5748 0.4 6.3 441152 111352 ? S 11:54 1:03 /usr/sbin/apache2 -k start
www-data 7171 0.5 6.1 438680 108500 ? S 13:15 0:44 /usr/sbin/apache2 -k start
www-data 7176 0.4 6.0 434788 106156 ? S 13:15 0:39 /usr/sbin/apache2 -k start
www-data 7180 0.4 4.8 412348 84276 ? S 13:15 0:40 /usr/sbin/apache2 -k start
www-data 7183 0.4 6.0 436404 105884 ? S 13:15 0:42 /usr/sbin/apache2 -k start
www-data 7449 0.4 6.0 436816 105672 ? S 13:30 0:35 /usr/sbin/apache2 -k start
www-data 7584 0.4 6.1 438848 108184 ? S 13:38 0:29 /usr/sbin/apache2 -k start
www-data 7586 0.4 5.4 426096 95776 ? S 13:38 0:34 /usr/sbin/apache2 -k start
www-data 7589 0.5 6.1 438784 108500 ? S 13:38 0:37 /usr/sbin/apache2 -k start
www-data 7612 0.5 6.2 438840 110072 ? S 13:39 0:42 /usr/sbin/apache2 -k start
www-data 7815 0.5 6.1 438524 108296 ? S 13:52 0:34 /usr/sbin/apache2 -k start
www-data 7818 0.4 6.5 444132 115312 ? S 13:52 0:30 /usr/sbin/apache2 -k start
www-data 8565 0.3 6.0 436516 106940 ? S 14:29 0:15 /usr/sbin/apache2 -k start
www-data 8612 0.4 5.7 430564 100064 ? S 14:31 0:20 /usr/sbin/apache2 -k start
www-data 8613 0.4 5.2 421100 91464 ? S 14:31 0:19 /usr/sbin/apache2 -k start
www-data 8615 0.4 6.2 437816 108756 ? S 14:31 0:18 /usr/sbin/apache2 -k start
www-data 8616 0.4 6.2 441132 110080 ? S 14:31 0:18 /usr/sbin/apache2 -k start
www-data 8617 0.4 6.0 434720 105772 ? S 14:31 0:18 /usr/sbin/apache2 -k start
www-data 8618 0.4 4.7 412620 83376 ? S 14:31 0:20 /usr/sbin/apache2 -k start
www-data 8632 0.4 6.3 440428 111280 ? S 14:34 0:16 /usr/sbin/apache2 -k start
www-data 8675 0.5 6.3 440176 110512 ? S 14:35 0:21 /usr/sbin/apache2 -k start
www-data 8679 0.4 6.1 436796 107532 ? S 14:36 0:15 /usr/sbin/apache2 -k start
www-data 8861 0.5 6.0 436936 106152 ? S 14:50 0:16 /usr/sbin/apache2 -k start
www-data 8862 0.5 6.2 439588 110364 ? S 14:50 0:17 /usr/sbin/apache2 -k start
www-data 8863 0.3 5.8 432308 102788 ? S 14:50 0:11 /usr/sbin/apache2 -k start
www-data 8937 0.4 6.4 440856 112348 ? S 14:59 0:12 /usr/sbin/apache2 -k start
www-data 9342 0.4 4.6 411788 81516 ? S 15:33 0:01 /usr/sbin/apache2 -k start
www-data 9408 0.5 4.8 414664 84512 ? S 15:39 0:00 /usr/sbin/apache2 -k start
vmstat 15 5输出:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 97296 70168 25660 142736 4 6 79 69 132 177 15 1 82 2
0 0 97292 70136 25684 142792 0 0 5 51 78 102 10 0 89 1
0 0 97292 71964 25700 143124 0 0 21 53 113 163 15 0 82 2
1 0 97292 69020 25728 143872 6 0 57 49 86 123 10 0 87 2
0 0 97284 62704 25756 144668 4 0 53 78 163 191 22 2 76 1
Apache 以 prefork 模式运行,这是我的配置:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 15
MaxSpareServers 35
MaxClients 150
MaxRequestsPerChild 4000
</IfModule>
当这台机器开始锁定时,它会很快出现故障,并且通常会迫使我对其进行电源循环,这对系统来说并不健康,所以希望这里有人有一些好主意。谢谢!
答案1
对我来说这里有几个警告标志。
1) VPS 服务器。其性能并不出众,而且 RAM 有限。
2) Apache2。可能是常规安装,并未针对 VPS 操作进行调整。
在您的 中/etc/apache2/apache2.conf
,找到类似以下内容的行:Keepalive On
并将其更改为Keepalive Off
这通常可以提高 VPS 服务器上 Apache 的性能。
您可能还想检查其他事项:
- 您是否已设置 robots.txt 文件来阻止搜索爬虫的攻击?
- 假设您正在运行 PHP,您是否使用 APC 或类似的东西作为操作码缓存?这将大大减少 Apache 所需的内存量。