我的环境
- CentOS 6.4 X86_64
- Apache 2.4.4
- PHP 5.4.16(FPM)
- 2 个 Intel Xeon E5-2620 @ 2.00GHz(每个处理器 8 核、16 线程)
- 48GB RAM 注册内存。
- 3 块 15RPM 145GB 硬盘,组成 RAID0(由 BIO
有趣的变量
<IfModule mpm_event_module>
StartServers 2
ThreadLimit 196
MinSpareThreads 96
MaxSpareThreads 192
ThreadsPerChild 96
MaxRequestWorkers 192
MaxConnectionsPerChild 96
</IfModule>
Apache 服务器状态
服务器版本:Apache/2.2.4 (Unix) OpenSSL/1.0.1e mod_fastcgi/mod-fastcgi-SNAP-0910052141
服务器建立时间:2013 年 5 月 24 日 16:48:07
当前时间:2013 年 6 月 17 日星期一 09:48:11 COT
重启时间:2013 年 6 月 17 日星期一 08:35:14 COT
父服务器配置 生成:1
父服务器 MPM 生成:0
服务器正常运行时间:1 小时 12 分钟 57 秒
服务器负载:0.05 0.10 0.09
总访问次数:14144 - 总流量:349.7 MB
CPU 使用率:u.28 s.25 cu0 cs0 - .0121% CPU 负载
3.23 请求/秒 - 81.8 kB/秒 - 25.3 kB/请求
当前正在处理 1 个请求,191 个空闲工作者PID | Connections | Threads | Async connections | total | accepting | busy | idle | keep-alive | closing ============================================================== 18997 | 3 | yes | 1 | 95 | 0 | 3 18485 | 0 | yes | 0 | 96 | 0 | 0 ============================================================== Sum | 3 | | 1 | 191 | 0 | 3
错误日志
错误信息是
[2013 年 6 月 17 日星期一 09:32:45.680842] [mpm_event:error] [pid 8574:tid 140185091581760] AH00485:记分牌已满,未达到 MaxRequestWorkers
每隔几秒就会出现一次这种情况。我不明白。我该如何解决?
答案1
我们在 Apache 2.4.6 上遇到了同样的问题。在监控服务器并调整设置几个小时后,我们认为 Apache 可能存在错误。似乎发生的情况是服务器进程偶尔会进入状态G
(正常完成)并重新启动以接受新请求,这是正常的。不正常的是,由于某种原因,这可能需要几分钟才能重新启动。如果您只有几个服务器进程在运行,并且它们同时进入该G
状态,那么您的记分板就会填满,您将无法再处理任何请求。
G
我们所做的是增加服务器的数量,因此它们同时进入该状态的可能性较小。同时请确保MaxRequestWorkers
为每个服务器进程分配至少 25 个线程(),因为这似乎是默认值(即 5 Servers
x 25 ThreadsPerChild
= 125 MaxRequestWorkers
)。您可以ThreadsPerChild
根据需要进行更改,我们将其保留为默认值。如果您没有分配足够的线程,则其他服务器将无法启动。我们保留MinSpareThreads
默认值 25,默认值为MaxSpareThreads
75。如果您修改这些设置,则 的值MaxSpareThreads
必须大于或等于 和 的总和MinSpareThreads
。ThreadsPerChild
还MaxRequestWorkers
必须等于或小于ServerLimit
。
这是对我们有用的方法,但对您来说可能不是最佳配置。
StartServers 3
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAlive Off
编辑:这是已确认的漏洞在 httpd 的 mpm_event 模块中,可能无法通过配置修复。
链接的错误追踪器在事件模块的新版本正式发布之前,条目有一个假定的补丁和更多关于如何修复此问题的讨论。
答案2
看到同样的问题。
Apache 2.4.7-1ubuntu4.4 on Ubuntu 14.04
Server Version: Apache/2.4.7 (Ubuntu)
Server MPM: event
Server Built: Mar 10 2015 13:05:59
我们尤其可以通过重新加载 apache 来导致这种行为。
然后我们看到的是几个没有停止的旧进程:
root 28192 0.0 0.8 103772 8648 ? Ss Mar16 0:03 /usr/sbin/apache2 -k start
www-data 2530 0.3 2.1 865188 21516 ? Sl 06:26 0:54 \_ /usr/sbin/apache2 -k start
www-data 2531 0.2 2.1 865436 21892 ? Sl 06:26 0:51 \_ /usr/sbin/apache2 -k start
www-data 3299 0.3 2.0 864140 20628 ? Sl 06:46 0:51 \_ /usr/sbin/apache2 -k start
www-data 7305 0.3 2.1 865100 21504 ? Sl 08:36 0:37 \_ /usr/sbin/apache2 -k start
www-data 11952 0.2 1.8 863004 19268 ? Sl 10:46 0:06 \_ /usr/sbin/apache2 -k start
www-data 13284 0.0 0.6 103772 6692 ? S 11:18 0:00 \_ /usr/sbin/apache2 -k start
www-data 13553 2.1 2.0 866156 21248 ? Sl 11:23 0:01 \_ /usr/sbin/apache2 -k start
注意“较旧”和“较新”的 PID 和开始时间。^^
PID Connections Threads Async connections
total accepting busy idle writing keep-alive closing
7305 14 no 0 0 0 0 0
2530 13 no 0 0 0 0 0
3299 7 no 0 0 0 0 0
13553 65 no 17 8 0 25 25
2531 15 no 0 0 0 0 0
11952 10 no 0 0 0 0 0
Sum 124 17 8 0 25 25
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGW_WWWW__W_W_W_WWWWWWW__WWGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGG
答案3
Apache/2.4.52 [2022 年 1 月 12 日,星期三 05:25:49.646258] [mpm_event:error] [pid 1400:tid 47341877433408] AH03490:记分牌已满,未达到 MaxRequestWorkers.Increase ServerLimit。
任何想法?
答案4
mlissner 的回答对我有帮助,因为我在尝试安装 OpenProject 时首先增加了 LimitRequestFieldSize,然后增加了 MaxRequestWorkers,然后来到了这里:https://openproject.com。
我决定重做所有事情,希望从头开始可以修复错误。没想到安装程序继续运行所需的迁移,而第一次没有完成这些迁移。
因此我也将其提交给经典,希望它也能帮助其他人。