偶尔,在我的 Apache 错误日志中,我会发现:
[error] server reached MaxClients setting, consider raising the MaxClients setting
由于内存不足的问题,我过去曾故意将 MaxClients 降低到 60,但我想知道当服务器达到此限制时用户端究竟发生了什么。他们访问的页面是否需要更长时间才能加载?他们是否收到某种错误消息?
答案1
首先,客户端请求将排队,直到 Apache 服务器上有空闲的进程/线程。因此,客户端将看到页面加载延迟。请参阅MaxClients
参数文档了解更多信息。
当客户端请求被放入积压队列时,客户端请求最终可能会超时。然后用户将在其浏览器中看到一个错误页面,告知服务器给出答案的时间太长。默认超时值为Firefox 中 300 秒例如。或者用户会在超时之前取消请求……
然后,如果服务器收到更多请求,并且无法及时获得空闲的进程/线程,队列ListenBacklog
就会被填满(默认为 511 个排队请求),任何后续请求将根本得不到服务。然后浏览器会告诉用户它无法连接到该网站,就像该网站完全瘫痪一样。
在 TCP 实现中,此积压队列在操作系统级别进行管理。在 Linux 下,listen
手册页将为您提供有关其管理方式的更多信息。以下是另一个非常关于 Linux 和 BSD 系统中 TCP 积压队列的深刻见解。