在遇到可怕的256个最大连接Apache Limit之后该怎么做

尽pipe服务器资源很好,但是我抓住了我的脑袋,试图弄清楚为什么我的网站反应如此缓慢,于是我终于检查了Apache的状态,发现:

78 requests/sec - 0.7 MB/second - 8.5 kB/request 256 requests currently being processed, 0 idle workers 

看来,我的Apache是​​从字面上最大的连接。 任何试图访问我的网站的人都会被置于“等待列表”中,直到Apache再次释放。

看来我有两个select。

A)提高256以上的最大连接限制。虽然根据这篇文章,它不是那么容易:

默认情况下,MaxClients参数的硬编译限制为256.但是可以通过重新编译Apache来更改此参数。 一些发行版或托pipe公司将此限制提高到非常高的值,例如512或甚至1024以应付大负载。

B)find占用太多时间的脚本。 这对我来说似乎更加棘手,因为大多数apache进程只是出现,然后再次消失。 另外,我的网站的PHP脚本已经很好地进行了优化…并且再一次地,服务器资源很好:

 Server load 2.69 (8 CPUs) Memory Used 25.33% (2,039,108 of 8,048,804) Swap Used 1.32% (54,156 of 4,095,992) 

我应该select哪个选项(如果其中之一),我应该怎么做?

编辑

更多信息:服务器版本:Apache / 2.2.23(Unix)mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635

HTTP Conf: http : //pastebin.com/yBeLt6mP

Parital请求示例: http : //pastebin.com/vzUVDMPR

如果粘贴区显示奇怪,则切换文本自动换行。

那篇文章是不准确的; 当使用prefork MPM时, MaxClients可以提升到256以上(这是我现在根据你对问题的描述所使用的)。 从文档 :

对于非线程服务器(例如,prefork), MaxClients转换为将被启动以服务请求的subprocess的最大数量。 默认值是256; 要增加它,你还必须提高ServerLimit

ServerLimit是一个具有严格编译限制的服务器限制,但是在没有服务器运行到其他瓶颈的情况下,它已经到达了应该达到的地步。 文档 :

ServerLimit 20000编译到服务器(用于prefork MPM 200000)有一个硬限制。 这是为了避免错别字造成的恶意效果。

所以,如果你想提高你的客户端限制为512,那么:

 MaxClients 512 ServerLimit 512 

你还应该看看你正在使用哪个MPM,因为prefork以外的MPM比较好。 在这里看到更多的信息。

我build议你使用反向代理,像nginx或lighttpd可以处理比apache更多的连接。 取决于你的网站如何使用htaccess你也可以使用nginx / lighttpd与fcgi和完全放弃Apache。