大约 20 分钟后,我的 Apache 服务器似乎无法连接。所谓无法连接,是指如果我访问curl
任何页面,2-3 分钟内什么都没有,然后什么都没有显示出来。我不得不重新启动 Apache 才能使用。实际的盒子本身似乎很好,因为我总是通过 SSH 登录……所以我认为这只是 Apache 的问题。
在停止/启动 Apache 服务器约 3-5 分钟后,内存使用情况会出现以下变化:
一秒钟后它是:
CPU MEM
21997 root 20 0 459m 208m 8504 R 45.8 20.8 10:14.56 apache2
下一个:
21997 root 20 0 459m 208m 8504 S 8.8 20.8 10:37.37 apache2
因此,一秒钟 CPU 占用率为 40%,内存占用率为 20%
只有 2-3 个小型网站使用 PHP,所以它们不可能消耗那么多内存。我想知道为什么会发生这种情况?!
我的 Apache (prefork) 配置是:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
服务器版本:Apache/2.2.22(Debian)
在 Debian Wheezy 上使用libapache2-mod-php5
我知道mod_php
这可能不是最有效的,并且可能有更好的替代方案,例如php-fpm
,和/或使用nginx
,但我想真正找到问题的根源,而不是避免它。
如果有任何建议我将非常感激。
我认为 apache2 的配置是原有的。使用 DigitalOcean VPS,1GB 内存 / 30 GB SSD / 2TB 传输层。
编辑#1:我刚刚读了一些 Linode 优化文章,其中提到了KeepAlive
在低内存服务器上关闭。我要尝试一下,看看效果如何。
答案1
您检查过您的日志吗?access.log 和 error.log?