在我的错误日志中,我看到:
server reached MaxClients setting, consider raising the MaxClients setting
我的MaxClients设置是150.但是,当我计算什么似乎是一个最佳的MaxClients设置我想出:
Mem used by 1 Apache process = 16 Mem available to Apache = 197 MaxClients = 12 (197/16)
所以,我应该敲MaxClients的方式下降到12,因为我的计算表明,是所有的RAM我可用,或者我应该提高限制的错误日志暗示(或者我的计算是毫无价值的,因为我误解的东西)?
如果您正在运行prefork Apache,请考虑在您的httpd.conf中设置KeepAlive Off。 而不是每个孩子持有不活动的连接打开Apache将完成后closures每个连接。 这将减less服务所需的整体连接和subprocess。 它会增加一点额外的时间,因为每个新请求都必须重新与服务器协商,而不是重新使用打开的连接。
(编辑)哦,是的问题。 我会离开MaxClients单独或基于您有RAM设置它。 假设你有足够的内存,经验法则是假定后端速度不是很慢的CPU核心数量的2-4倍,否则使用RAM作为限制因素。 不过,我认为closuresKeepAlive会把你需要的孩子的数量减less到一个相当正常的水平,而你将不再达到极限。
(edit2)现在,这里是棘手的。 如果你的Apache服务器是一个主要运行PHP,Ruby等应用服务器的代码,并且处理从不同的后端或磁盘到2-4x规则的渲染页面的数据。 一般来说,如果每个内核的页面访问量非常大,或者每个内核有4个页面访问量,那么您将每个页面显示250毫秒的CPU。 如果你有一个独立的服务器,你将能够提供更多的请求,因为它们中的大部分都是小图像,css,js等等,这些图像通常会从应用服务器的另一组服务器上提供。 我假设你有一台服务器,所以把整个事情放在一边可能是你最好的select。
在上一份工作中,我们运行了8个/ 8GB前端机器,其中有50个MaxClients和KeepAlive Off,这些工作非常好。 在某些情况下,将MaxClients设置为100可以得到稍微好一点的基准,但是由于大多数时候我们在各种后端阻塞或者开始饿死CPU,因此页面生成的整体延迟增加了。
而不是运行这个计算,我会试着看看你的服务器真的有能力处理。 这个计算或多或less是一个指导方针,但要确定你的服务器,你只需要强调一下,看看是否有可能。