我有麻烦与我的Apacheconfiguration。 现在nginx作为一个反向代理坐在前面的Apache,提供静态资产,然后传递PHP请求到Apache。 Apache正在使用mod_php。 我们确实有用户,但网站正在慢慢增长,所以我知道一个事实Mysql不是这里的罪魁祸首。 该网站不是数据库重,它是Web服务重。
该网站正在慢慢增长,我们将在这个月内处理大约43万个独立用户,每次可以有80-230个人在其上,但每秒请求数不会超过8个。
Apache似乎持有内存,大约一个星期后导致服务器崩溃,并需要重新启动。 服务器是一个linode 8核心,8 GB的Ubuntu 12.04机器。
这是当前configuration我们现在使用Prefork模块:
Timeout 15 KeepAlive Off MaxKeepAliveRequests 1000 KeepAliveTimeout 5 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 256 MaxRequestsPerChild 500 </IfModule> HostnameLookups Off
如果您需要更多信息,请告诉我。 我们会从prefork模块中获得更less的内存使用和更好的性能吗?
关于您的容量规划: 您如何为网站进行负载testing和容量规划?
至于内存泄漏,如果孩子在500次请求后正常终止,Apache不应该泄漏内存。 您的PHP代码(以及依赖它的库)可能会导致孩子无法正常终止或消耗过多的内存。
尝试查找内存使用情况或创build时间明显大于/远远高于其他情况的进程。 lsof -pPID可能会为您提供一个提示,如果您幸运的话,那么您很有可能在您面前进行一些debugging。
(当然,这是假定Apache是罪魁祸首 – 我认为这是理所当然的,你已经certificate了这一点)