我正在测试我的服务器以了解它支持多少个并发连接。我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 值并重建服务器。