达到可怕的256个最大连接数后的处理方法Apache Limit


9

在尝试弄清楚为什么即使服务器资源正常的情况下我的站点响应仍然这么慢之后,我终于检查了Apache的状态并发现:

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

看来我的apache在连接方面实在是太累了。任何试图访问我的网站的人都会被列入“等待名单”,直到Apache再次免费。

看来我有两个选择。

A)将最大连接限制提高到256以上。尽管根据本文所述,并不容易:

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

B)找到占用太多时间的脚本。对我来说,这似乎更加棘手,因为大多数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)

我应该选择哪个选项(如果有),应该怎么做?

编辑

详细信息:服务器版本: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

家长请求样本:http : //pastebin.com/vzUVDMPR

如果粘贴容器显示异常,则切换文本换行。


您引用的文章大约6岁。软件变更。请参阅Shane的答案。
克里斯S

1
@ChrisS甚至已经过时了-编译的限制是1.x的东西(2002年发布了2.0),并且该文章甚至明确链接到2.0文档。
Shane Madden

Answers:


10

那篇文章不准确;MaxClients可以在使用prefork MPM时将其提高到256以上(根据问题描述,我认为您当前正在使用该功能)。从文档中

对于非线程服务器(即prefork),MaxClients将转换为将启动以处理请求的子进程的最大数量。预设值为256;要增加它,您还必须加注ServerLimit

ServerLimit是具有硬性编译限制的服务器,但是它已经超出了服务器永远不会遇到其他瓶颈的范围。 说明文件

ServerLimit 20000编译到服务器中有一个硬限制(对于前叉MPM 200000)。这样做是为了避免错别字引起的令人讨厌的影响。

因此,如果您想将客户限额提高到512,那么:

MaxClients 512
ServerLimit 512

您还应该查看所使用的MPM,因为除前叉之外的MPM更适合规模化。有关更多信息,请参见此处


我看到core.c和worker.c正在运行httpd -l。我想这意味着我正在运行工人MPM?
kmoney12

@hellohellosharp事实上-在这种情况下,你会想你的潜在调整MaxClientsServerLimitThreadsPerChild,和ThreadLimit。您可以从提供当前的工作配置httpd.conf吗?
Shane Madden

是的...公开发布有任何危险吗?希望不是,这里是:pastebin.com/yBeLt6mP
kmoney12

不,发布大多数httpd.conf文件没有问题。只要确保您没有奇怪的地方,例如带有密码/用户名/等的注释。这些有时也会在代理配置部分等中出现。许多人也喜欢编辑IP和域名,只是他们没有引起人们的注意
Chris S

1
状态模块可以向您显示这些详细信息。
ETL

-1

我建议您使用反向代理,例如nginx或lighttpd可以处理比Apache更多的连接。根据您的网站使用htaccess的方式,您还可以将nginx / lighttpd与fcgi和forego apache一起使用。


4
真??他需要向其中添加两行配置httpd.conf,您的解决方案是淘汰大部分他正在运行的软件并替换它?每个软件都有其问题,但是未经教育的滥用会导致更严重的问题。
克里斯S

最终,nginx可以处理更多活动的连接,这取决于OP决定使用什么,我只是提出了我的建议。
Shoshomiga
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.