Web 服务器端 Keep-Alive 的优缺点

Web 服务器端 Keep-Alive 的优缺点

HTTP 协议中的 Keep-Alive 连接功能旨在减少对 Web 服务器的 TCP 连接命中。它应该能够提高 Web 服务器的性能。但是,我发现有些 Web 服务器故意从服务器端禁用 KeepAlive 功能。

据我了解,一些反向代理(即 HAProxy)禁用 HTTP 保持活动以减少内存使用量,在某些情况下,内存使用量比 CPU 使用量更为关键。

Web 服务器禁用 Keep-Alive 还有其他原因吗?

答案1

保持活动状态旨在减少 tcp 设置的数量,这些设置非常繁琐,并且受延迟的影响很大。它的主要目标是提高客户端性能 - 对于现代服务器操作系统来说,设置 tcp 连接的成本很低。

一些代理/负载均衡器倾向于禁用对 Web 服务器的保持活动,因为它们假设实际的服务器位于具有可忽略延迟的 LAN 上,因此 TCP 设置损失可忽略不计。它还降低了平衡软件的复杂性,因为传入和传出连接(从 LB 的角度来看)之间不一定存在一对一的关系。

服务器禁用 keep-alive 的原因很少,所以我怀疑这可能是管理员的错。一个例外是每个连接一个子节点的服务器 (apache),在这种情况下,尽快释放该子节点/线程会带来好处,即使整个浏览器体验 (和带宽使用率) 会变差。

请注意,据我所知,keep-alive 是一项可选功能,不需要任何服务来实现它。

相关内容