Apache 2.4 最大并发用户限制

Apache 2.4 最大并发用户限制

我无法确定我的 Apache 实例可以处理多少个用户。

我从 Ubuntu 存储库安装了 Apache 2.4.18,据我记得,所有设置都是默认设置。

我做了一个服务器压力测试,发现当超过300正在进行的请求,服务器开始丢弃新的请求,提供响应代码 502 或 504。

我尝试在服务器配置文件和文档中寻找对此的解释,但无法发现“300”来自哪里。

我正在使用mpm_prefork,其配置文件如下:

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

部分属性来自apache2.conf

Timeout 300
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 5

所以问题是Apache 默认最大并发客户端限制是多少在我的(默认)配置中?我对调整 Apache 来处理尽可能多的连接不感兴趣 - 只想了解 Apache 如何计算最大并发客户端限制。

答案1

根据 Apache文档

对于非线程服务器(即 prefork),MaxRequestWorkers表示将启动用于处理请求的最大子进程数。默认值为 256。

根据您可用的 RAM,默认设置通常太高。

要确定正确的设置,请查看您的平均 Apache 进程大小以获取使用量 x MB。考虑您希望为其他进程保留多少内存 y MB,然后使用此公式计算 prefork。

(Total RAM – yMB)/xMB = MaxRequestWorkers

注意:“y”值始终为至少Apache 本身和操作系统就需要 500 MB,并且根据其他应用程序的不同,可能需要更多。

至于其他价值观,Apache 文档反复建议不要提高这些值,除非“在非常繁忙的网站上”,根据定义,例如,只有 2-4 GB 总 RAM 的网站永远不会如此。以下情况会很好:

StartServers         2
MinSpareServers      5
MaxSpareServers     10

如需更多参考,您可以查看Apache 文档针对此问题进行性能调整。

相关内容