【发布时间】:2016-11-17 00:30:42
【问题描述】:
从 Apache 2.2 升级后,我正在尝试在 Debian 8.2 上配置我的新 Apache 2.4.10 实例。这次我使用的是 event_mpm 模块,从 mpm_worker 更改。
我已经设置好了所有的路由,似乎一切正常。但是我开始在日志中看到这个错误:
[Tue Nov 15 10:05:10.743107 2016] [mpm_event:error] [pid 12345:tid 12345] AH00485: scoreboard is full, not at MaxRequestWorkers
它不会一直发生,它每隔几个小时就会大量发生。 (我意识到这里有一个关于此的错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=53555。但如果我没看错的话,更多的是关于挂起服务器,这不会发生在我身上。)
我不太了解这个错误,所以我检查了我的配置。看着它,我想我至少可以将我的 ThreadsPerChild 值更改为更高的值。
所以我的配置是这样的:
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 150
MaxSpareThreads 500
ThreadLimit 128
ThreadsPerChild 25
MaxRequestWorkers 1200
MaxRequestsPerChild 0
到这里:
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 150
MaxSpareThreads 500
ThreadLimit 128
ThreadsPerChild 75
MaxRequestWorkers 1200
MaxRequestsPerChild 0
我知道工人的数量是 StartServers * ThreadsPerChild (3 * 75 = 225)。但是,当我访问我的服务器状态页面时,它仍然被列为有 75 个工作人员,即我的旧值 25 * 3 = 75。
我已经重新加载了配置,重新启动了我的 Apache,我仍然在页面上看到这样的状态:
正在处理的 32 个请求 + 43 个空闲工作人员 = 75 (3 * 25)。 不应该是225吗?我错过了什么吗?
我肯定已经加载了 mpm_event 模块:
$ apache2ctl -V
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
所以:
这个错误有什么可担心的吗?我可以通过提高我的 ThreadsPerChild 值来消除它吗?
为什么根据状态页面提高我的 ThreadsPerChild 值似乎无助于提高我的工作人员数量?
【问题讨论】:
标签: apache