我从 Debian 存储库 (6.0/Squeeze) 安装了 Apache 2.2。默认情况下,Debian 会安装 prefork 模块并附带以下 (默认) 配置:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
查看状态页面上的记分牌,我看到有 256 名工人可用:
Current Time: Sunday, 05-Jun-2011 22:50:00 CEST
Restart Time: Saturday, 04-Jun-2011 05:49:50 CEST
Parent Server Generation: 3
Server uptime: 1 day 17 hours 9 seconds
Total accesses: 208737 - Total Traffic: 4.6 GB
CPU Usage: u1.08 s.18 cu0 cs0 - .000854% CPU load
1.41 requests/sec - 32.6 kB/second - 23.0 kB/request
1 requests currently being processed, 9 idle workers
.______W__.._...................................................
................................................................
................................................................
................................................................
我不知道它是否真的是 256,因为请求列表的范围是从 0 到 149。由于一个(尚未发现的)错误,Apache 在有 150 个活动服务器时会停止运行,这与设置相符MaxClients
。我想知道 4 行 64 个字符的显示是否具有误导性,应该总共显示 150 个字符。
答案1
回答我自己的问题,记分牌似乎是基于ServerLimit
而不是MaxClients
。Apache 文档并没有明确说明ServerLimit
prefork 情况下的默认值,结果是 256。
答案2
apache2 默认(假设您使用apt-get install apache2
)在 Debian Squeeze(6.0)中为 Worker MPM 模型进行编译。
如果你需要或者想要 prefork MPM 模型,apt-get install apache2-mpm-prefork
您在问题中提到的配置块是 prefork MPM 模型的条件选项,并不意味着正在使用 prefork MPM。
MPM Prefork,apache2 进程太多了吗?是另一个处理类似问题的 ServerFault 问题。
您可以使用以下方式找到 MPM 模型:apache2 -V
或者httpd -V
取决于您的分布。