当 Apache 到达 MaxClients 时,用户会看到什么?

run*_*nts 8 performance performance-tuning apache-2.2

偶尔,在我的 Apache 错误日志中,我会发现:

[error] server reached MaxClients setting, consider raising the MaxClients setting
Run Code Online (Sandbox Code Playgroud)

由于内存不足的问题,我过去故意将 MaxClients 降低到 60,但我想确切地知道当服务器上达到此限制时用户端发生了什么。他们访问的页面加载时间是否更长?他们是否收到某种错误消息?

Læt*_*æti 13

首先,客户端请求将排队,直到有一个进程/线程在 apache 服务器上空闲。因此,客户端将看到加载页面的延迟。有关更多信息,请参阅MaxClients参数文档

当放置在积压队列中时,客户端请求最终会在客户端超时。然后用户将在其浏览器中看到一个错误页面,告知服务器响应时间过长。例如,Firefox 中的默认超时值为300 秒。或者用户会在超时之前取消请求......

然后,如果服务器收到更多请求而无法及时获得空闲进程/线程,则ListenBacklog队列可能会被填满(默认为 511 个排队请求)并且任何后续请求都不会得到服务。然后浏览器会告诉用户它无法连接到网站,就像网站完全关闭一样。

在 TCP 实现中,此积压队列在操作系统级别进行管理。在 linux 下,listen手册页将为您提供有关管理方式的更多信息。这是另一个关于 linux 和 BSD 系统中 TCP 积压队列的非常有见地的读物