我拥有一个服务器,它拥有一个高流量站点,在给定的时间内为800-1400个用户提供服务。这些用户通常停留超过5分钟(考虑到网站的性质,用户通常下载大型文件)。
我注意到,服务器每48小时就用完一次交换,而我的服务器只使用5-11%的内存。我想征求关于应该对Apache配置进行哪些更改以防止发生这种情况的建议。
我的apache配置如下:
keepalive: Off
keepalivetimeout: 5
maxclients: 2500
maxkeepaliverequests: 200
maxrequestsperchild: 10000
maxspareservers: 10
minspareservers: 5
serverlimit: 2600
serversignature: Off
servertokens: Full
startservers: 5
timeout: 300
服务器规范:
Intel XEON E5-1620v2
64 GB DDR3 ECC 1600MHz
2x2000GB
发布于 2014-12-06 12:00:48
在考虑硬件升级之前,尝试优化操作。
否则,我建议您启用oom杀手,因为它会杀死接近消耗所有服务器内存的任何进程。当然,您需要一种更新的方法来重新启动apache (如daemontools)。
但在此之前,我想您可以考虑为apache设置MaxClients指令。这限制了apache一次服务请求的数量,并将其他请求排队。对于预叉,这限制了子进程的数量。对于工作人员,它限制了可用于服务请求的线程数量。
"Maxclients $number“是语法,您可以尝试使用MaxClients编号,看看您可以在不消耗太多服务器资源的情况下将其设置得多高。
当然,这个建议是基于这样一个假设,即您已经确定apache是导致内存问题的原因。
发布于 2014-12-06 18:40:23
maxrequestsperchild
和maxclients
切下来。先从尾端划掉一个零,然后看看它是如何进行的。从那里开始,你可能会想把它们切成两半。https://serverfault.com/questions/649634
复制相似问题