并发连接和 Prefork MPM 模块

并发连接和 Prefork MPM 模块

我正在测试我的服务器以了解它支持多少个并发连接。我my mpm_prefork.conf这样配置:

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers       5
    MaxSpareServers      10
    MaxRequestWorkers     100000
    MaxConnectionsPerChild   0
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

但是当我的服务器收到约 8200 个并发连接时,会引发错误并且 apache 不再响应:

[notice] caught SIGTERM, shutting down

服务器有足够的内存并有剩余

配置没问题吧?我必须改变什么吗?

谢谢

答案1

您还必须更改该ServerLimit值。来自MaxRequestWorkers文档:

对于非线程服务器(即 prefork),MaxRequestWorkers 转换为将启动以服务请求的子进程的最大数量。默认值为256;要增加它,您还必须提高 ServerLimit

但里面有一个注释服务器限制文档:

编译到服务器中有 ServerLimit 20000 的硬限制(对于预叉 MPM 200000)。这样做的目的是为了避免拼写错误造成的不良影响。要将其进一步增加到超过此限制,您将需要修改 mpm 源文件中的 MAX_SERVER_LIMIT 值并重建服务器。

相关内容