全新安装 Debian 8。运行我的 Web 服务器几分钟/几小时后,Apache2 停止工作。我总是从 Apache2 error.log 收到错误“Scoreboard 已满,未达到 MaxRequestWorkers”。
此解决方法但是对我来说是可行的 - 我不想将 MPM 模式更改为 prefork。那么还有其他解决方案吗?比如升级 Apache2 版本?我对 Linux/Debian 还比较陌生,所以我不确定到底该怎么做。
答案1
这是 apache 中 mpm-event 和 mpm-worker 的一个错误,您可能仍会遇到:
https://bz.apache.org/bugzilla/show_bug.cgi?id=53555
该错误是在服务器进程数量的增加和减少过程中产生的。
我认为,真正的“修复”已在较新的版本中实现,但您可以按照 Bugzilla 报告中 Comment12 中 ScottE 的建议轻松解决此问题。他在其中表示:“...如果我们将 MinSpareThreads 和 MaxSpareThreads 设置为等于 MaxRequestWorkers(这样 Apache 就不会尝试缩减进程),问题消失了(正如预期的那样,但验证(可能?)这与 Apache 缩小规模有关)...”
(我添加了重点)
到目前为止,我通过设置 MaxSpareThreads = MaxRequestWorkers 成功解决了这个问题。并且通过理解工作者、线程、服务器等之间的关系。后者非常重要。事件 MPM 所需的基本指令很简单。扩展服务的方法是将上述两个值设置为您想要支持的客户端连接数。其他一切都会正常工作。参见:http://httpd.apache.org/docs/2.2/mod/worker.html
恕我直言:如果您的目标是让 Apache 根据需要扩展“服务器”进程的数量,那么也许您不应该使用事件或工作模型。计算您要允许的客户端连接数,然后将它们配置为始终可用。否则,请更新您的 Apache,或按上述方法配置解决方法并使用它。
祝你好运!