我无法确定我的 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 文档针对此问题进行性能调整。