为什么阿帕奇说只有10个人时,有49个空闲的工人呢?

我也启用了ExtendedStatus的apache mod_status模块。 由于我将服务器状态configuration为仅在本地运行:

// httpd.conf <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 ::1 </Location> 

我使用lynx连接到它:

 lynx http://localhost/server-status 

这是输出:

  Server Version: Apache/2.2.22 (Ubuntu) Server Built: Mar 19 2014 21:10:46 ________________________________________________________________________________________________________________________ Current Time: Sunday, 04-May-2014 23:13:58 EDT Restart Time: Sunday, 04-May-2014 23:13:35 EDT Parent Server Generation: 0 Server uptime: 23 seconds Total accesses: 0 - Total Traffic: 0 kB CPU Usage: u0 s0 cu0 cs0 0 requests/sec - 0 B/second - 1 requests currently being processed, 49 idle workers _________________________....................................... _____W___________________....................................... ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ ................................................................ Scoreboard Key: "_" Waiting for Connection, "S" Starting up, "R" Reading Request, "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, "C" Closing connection, "L" Logging, "G" Gracefully finishing, "I" Idle cleanup of worker, "." Open slot with no current process Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request 1-0 8658 0/0/0 W 0.00 0 899699703 0.0 0.00 0.00 127.0.0.1 127.0.1.1 GET /server-status HTTP/1.0 ________________________________________________________________________________________________________________________ Srv Child Server number - generation PID OS process ID Acc Number of accesses this connection / this child / this slot M Mode of operation CPU CPU usage, number of seconds SS Seconds since beginning of most recent request Req Milliseconds required to process most recent request 

咦? 49名闲置的工人说呢? 但是如果你看一下apache2.conf中的mpm preforkconfiguration:

 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> 

它说从5个产卵的孩subprocess开始,并留下5悬挂。 因此,总共应该有10个apache进程。 这49个来自哪里?

我很抱歉,如果你已经知道这一点,但要明确,最小和MaxSpareServers是空闲工人的数量的build议 。 Apache可以并将会高于或低于这些configuration的值。 MaxClients是一个死亡的限制,在mpm_prefork的情况下,分叉的工人的限制。

至于你为什么在49个空闲的工作人员,Apache应该只响应客户端的客户端负载。 如果这是最近重新启动的服务器,那么在启动时必须有一些东西咀嚼工人。 如果最近没有重新启动,那么Apache将调整它对闲置员工的长期目标,目前大概是50人左右。 可能有其他的原因,拥有你的configuration…