“AH00485:记分板已满,未达到 MaxRequestWorkers”是什么意思?

“AH00485:记分板已满,未达到 MaxRequestWorkers”是什么意思?

我的环境

  • 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 Serversx 25 ThreadsPerChild= 125 MaxRequestWorkers)。您可以ThreadsPerChild根据需要进行更改,我们将其保留为默认值。如果您没有分配足够的线程,则其他服务器将无法启动。我们保留MinSpareThreads默认值 25,默认值为MaxSpareThreads75。如果您修改这些设置,则 的值MaxSpareThreads必须大于或等于 和 的总和MinSpareThreadsThreadsPerChildMaxRequestWorkers必须等于或小于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

我决定重做所有事情,希望从头开始可以修复错误。没想到安装程序继续运行所需的迁移,而第一次没有完成这些迁移。

因此我也将其提交给经典,希望它也能帮助其他人。

相关内容