🔗 请求队列过载
🔗 摘要
Squid 崩溃并可能立即重启。日志显示“请求队列过载”的错误。
🔗 症状
FATAL: ntlmauthenticator 请求队列过载FATAL: negotiateauthenticator 请求队列过载FATAL: basicauthenticator 请求队列过载FATAL: digestauthenticator 请求队列过载FATAL: redirector 请求队列过载
🔗 解释
Squid 使用辅助进程来执行某些操作,例如身份验证检查。每个辅助进程的数量可以由代理管理员配置。正如预期的那样,这些辅助进程在每秒可以处理的请求数量上是有限制的。其中大多数一次只能处理一个客户端请求。
当等待处理的并发客户端请求数量**超过**可用辅助进程来处理负载时,将显示此消息。如果您配置了 N 个辅助进程,则当 2N+1 个客户端正在等待回复时,将出现此警告。根据 squid 的版本,每个辅助进程的队列因子可能是 2 或 5。
此警告最常见于 NTLM 身份验证器。由于 NTLM 的特性,它会在相对较长的 NTLM 握手期间锁定一个辅助进程。这会极大地减少可以通过 Squid 发送的并发客户端请求数量。Winbind 的最大容量约为 256 个并发 NTLM 握手。更高的客户端连接速率需要一些技巧来组织快速握手和管理多个 DC。Negotiate 可以处理更多握手,但容量也很低,令人沮丧。
🔗 规避方法
- 并发性 - 某些辅助进程类型可以设置为并发。这些是基本身份验证、外部 ACL、URL 重写和重定向辅助进程。令人沮丧的是,这些恰恰是此问题最不常发生的辅助进程。提高并发性比增加子进程更好,但有一个限度。有一个 辅助进程多路复用器 可以轻松地为任何现有辅助进程添加支持。
- NTLM / Negotiate - 如果遇到此问题,您唯一的选择是增加使用的辅助进程数量。这些辅助进程的协议不支持并发。
- Squid-3.2 及更高版本具有*动态辅助进程*功能,允许管理员配置最小和最大辅助进程数量。Squid 将尝试运行最小数量,但如果流量负载需要更多辅助进程,它们将被启动。直到达到最大数量。如果流量超过最大辅助进程数量,此消息可能会再次出现。
类别: 知识库
导航: 站点搜索、站点页面、类别、🔼 向上