apache 2.4是否对连接有严格的限制?

我用prefork使用Apache 2.4。

我的MPM指令设置如下:

<IfModule mpm_prefork_module> MinSpareServers 200 MaxSpareServers 400 StartServers 200 ServerLimit 1300 MaxClients 1300 MaxRequestWorkers 1300 MaxRequestsPerChild 10000 </IfModule> 

但是我的服务器状态页面显示:

 Parent Server Config. Generation: 1 Parent Server MPM Generation: 0 Server uptime: 34 minutes 54 seconds Total accesses: 551221 - Total Traffic: 11.8 GB CPU Usage: u8151.55 s2320.18 cu.02 cs.11 - 500% CPU load 263 requests/sec - 5.8 MB/second - 22.5 kB/request 1024 requests currently being processed, 0 idle workers WKWKKWWWWKWKKKWKKCRWWKWWKKWKKWKWKWKWWWWWKKKWKWWKKWKKWWWWWKWWKWWK WWWWKWKWWWWWKWKKWKWKWCKWKKKKKWKKWWKKCKKKKWWWKKWKKWWWKKWCKKWKKKKW WWKKWKKWWWKWKWWKKKWKKWWWKKWWKKKWWKKKKWKKWKCKKWKKWKKKKWWWKWKKWKWW WWKWWKWWKKWKWKKWKRWKWKKWWWWWWKCKKKKKWWWKWWWKKKKWWKWWKWWKKKKWWKKK WKKKWWWWWWWKWKWKWWKKWKKKKKKWKWWKWWWKKKKWKKKWWKKWWKKWKWKWWWWKKWKW KWKWWWWKCWKKKCWKKWWWWWKWKWWKWKWRWKKWWKWKWKKWWKKWKWKWKKKKWWKKKWKW WKKKKKWKKKKWWKWKWKWWWKKKWWKWCCKWKWWKKWKKWWCKKWWWWKKWKWWWWWWWWKKK WWKKKWKWKKKKKKKKWKKKKKKKWWWCKWWWKKWWWWKWCWWKKKKWKWWKKKWKWKWWWWWW WKWKKKWKWKKWWWWKWWWWWKKCWKWWKWKWWWWWWKWWWWKKWWWKWWWWKWKWKKKWKKWK WWKKKWKWWWKKWWWKWKWKWKKKKWKWWWWWWWKKWWWWKKKCKKKWKWKWWWWKWKWWWWWW WWKKKWKWWWKWWKWWKKWKWKWKWKKWKKWKKKCKKWWWKWCWKKWWKKWWKKWKKWWKKWWK WWKKWKWKKWKWKWKWWKWKKWWKKWWKKKWKWWKKWWWKKWWKKCKKKWWKKWKWWWCWKKWK KKWKWKWWWWWKKKKKKKWKWKWKWWWWKKKWWKWKWKKKWKWWWKWCWWKWKWWKKKWWWCWK WCWCKWWKKWKWWKWKKWWWKKWWKRKWWKKWWWKWKWWKWKKWWWKKWWKWKWKWWWKWKWKW WKWKWWKWKKKWWWKWWWKCWWWWKWWWKKKKKKWKWKKKKKKKKWKKWWWWWWWWWKWWWKKW KWKKKWWKKWWKWKWWKKWWKKKKKWKWWWKKWKWWKWWWKKKWKWCKKKKWWKWWKWCKKCKK SSSSSSSSSSSSSSSSSSSSSSSSS....................................... ................................................................ ................................................................ ................................................................ .................... 

请注意,表示当前正在处理0个空闲工作的1024个请求的行。 它只需要1024个请求。

现在在我的/etc/init.d/httpd的顶部,我有ulimit -HSN 32768,所以我不认为这是一个打开的文件限制问题。

我不能真正想到为什么连接会在1024处被切断,即使我的MaxClients设置得更高,服务器状态似乎想要更多的连接,但在1024处停止。

根据Apache 2.4 ServerLimit文档 :

将ServerLimit 20000编译到服务器(用于prefork MPM 200000)有一个硬限制。

所以,你不应该碰到硬性限制。

在早期版本中调整ServerLimit时遇到问题; 尝试apache2ctl stop ,然后apache2ctl start 。 (使用优雅,甚至重新启动没有拿起改变。)

注意:你可能想减less你的KeepAliveTimeout和/或MaxKeepAliveRequests ,或者尝试KeepAlive Off因为你有这么多的工作在'K'状态。 此外,这些's'es表明,服务器启动工人有困难,可能是由于500%的CPU负载(我认为是最大可用)。如果调整KeepAlive设置不起作用,您可能需要考虑升级服务器或负载平衡。

您应该调查HA代理(如果您还没有)将您的请求拆分到多个服务器。

即使在快速的硬件上,也可以从一台机器上抽取大量的数据。 如果您需要保留一台机器,请尝试Nginx。 它将在高负载下围绕Apache运行圆圈。