Apache 将 TCP 连接保持在 CLOSE-WAIT 状态 600 秒

Apache 将 TCP 连接保持在 CLOSE-WAIT 状态 600 秒

我的设置由两个 Apache 服务器组成,如下图所示:

|Apache | >==Reverse Proxy Connection====> |Apache |
|Server1| <==Response through conntrack==< |Server2|

HTTP 连接成功后服务器 1服务器 2,后者发送一个TCP [FIN,ACK]数据包。

此数据包已正确确认服务器 1用数据TCP [ACK]包。连接现在处于CLOSE-WAIT状态。

然后,大约600秒后,服务器 1发送TCP [FIN,ACK]服务器 2,其回应为TCP [RST]

此数据包被 conntack 标记为“无效”,并且永远不会到达服务器 1(由于 iptables 规则),导致服务器 1重传数据TCP [FIN,ACK]包超过 20 次。这是因为 nf_conntrack 对于该CLOSE-WAIT状态下的 TCP 连接有 60 秒的超时限制。

数据包捕获

  • 为什么 Apache 会让 TCP 连接处于关闭等待状态那么长时间,而对方又会用 RST 进行响应?

相关内容