尽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。