MaxClients 是否决定了站点中的活跃用户数量

MaxClients 是否决定了站点中的活跃用户数量

保持所有因素不变,假设我的 apache 服务器配置如下,在事件 mpm 中

<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxClients 200 #
ServerLimit 200 #
MaxRequestsPerChild 100
</IfModule>

由于 MaxClients 设置为200,这将是任何时间点的最大活动连接数,

假设我的网站每秒接待 200 名访客,每个访客都会加载一个包含多张图片的页面,并且访问页面后会加载其他资源,

这是否意味着服务器请求的额外资源将由 apache 中的某个客户端处理,还是由客户端的子客户端处理?

我不明白为什么 apache 有这个,MaxRequestsPerChild因为客户端受到ServerLimit指令的限制,

MaxRequestsPerChild在上述场景中如何应用?

答案1

每个子级的最大请求数指示工作进程何时需要关闭并更新,一般情况下你想要一个更大的数字或者 0在 MaxRequestsperChild 中,除非您知道某处存在内存泄漏,并且保持进程打开而不更新它们会导致问题。

由于 prefork 是进程模型,并且打开一个进程比在相同进程中打开线程对 CPU 的要求更高,因此将 MaxRequestsperChild 设置为 100 将使得 apache 在收到一些负载时不断更新进程。

还请记住,MaxClients 和 ServerLimit 在 prefork 中“是相同的”,但与线程模型的“事件”不同。

我建议您尽快切换到 mpm_event,但如果不能,出于我之前提到的原因,请根据您预期的最大客户端数量预先创建更多的备用服务器,如果您预期的最大并发数为 200,请将其稍微增加一点,并为负载峰值准备大约 50-100 台备用服务器。

正如我之前提到的,如果您有 200 个并发客户端,您永远不会希望 maxrequestsperchild 为 100 来更新该过程,除非您希望服务器以慢动作运行。

相关内容