限制 httpd 进程最大数量的后果

限制 httpd 进程最大数量的后果

我正在考虑限制 centos/apache web 服务器上 httpd 进程的最大数量。我看过几篇帖子,讨论采取此操作来帮助减少内存负载(这就是我考虑这样做的原因),但没有一篇讨论对最终用户的影响。如果有人能澄清这一点,我将不胜感激。

答案1

对于最终用户来说,后果很简单,一旦服务器达到同时进程/线程/连接的限制,它将不再接受任何连接,直到其他用户停止。

编辑:正如 symcbean 在评论中指出的那样,他们一开始只会得到延迟的响应,因为服务器有一个积压监听队列。直到该队列已满,他们才会收到拒绝连接的消息。无论如何,结果是他们将获得较慢的响应或没有响应。

一般来说,你应该了解高峰期通常有多少同时访问的用户,并确保你的服务器至少可以处理两倍于此的访问量。你需要定期重新查看这些统计数据,如果访问者的模式发生变化,则需要更改设置。

我建议阅读如何对网站进行负载测试和容量规划?了解更多信息。

答案2

具体效果取决于 apache 的操作系统/版本。

在你的 CentOS 上,你需要考虑两个值: - 进程(子) - 每个进程的线程数

如果现在每个子级有 100 个线程,并且允许 100 个子级,那么您可能同时有 10,000 个人进行访问。

如果将其减少到 5 个子进程(相同的 ThreadsPerChild),则只有 500 人可以同时访问。

对您有积极影响:节省内存,但可能产生负面影响:人们(任何超过 500 人)无法访问您的网站

它有助于了解在特定时间内有多少人访问您的网站,从而了解有多少人会同时访问。

答案3

代价是人们实际上被告知“忙碌,请稍后再试”,而不是花费很长时间等待结果。

例如,如果一个页面的正常服务时间为 1/10 秒,那么小型服务器可以非常快速地提供最多 10 个页面,但超过该限制后,速度将急剧下降:50 个用户将在 4 秒内看到单个响应,速度慢 40 倍,而 100 个连接用户将看到他们的响应需要 9 秒,速度慢 90 倍。这是一个可怕的后果,这可能是相当“正常的过载” (;-))

如果内存充足,建议使用“准入控制”来防止内存耗尽。如果您进行了简单的负载测试并发现内存耗尽并在 500 个用户时开始出现问题,请将限制设置为略低于该值。

--戴夫

相关内容