Nginx没有正确释放TCP套接字?

时间:2015-10-17 12:25:18

标签: linux sockets nginx tcp

我正在使用Nginx,听起来Nginx没有正确发布TCP套接字。连接到我的Nginx的客户端正在使用代理,到目前为止,相同的4-tuplet ip source,port source,ip dest,port dest可以在很短的时间内(不到1分钟)重复使用。当它发生时,Nginx似乎丢失了。

以下是我在tcpdump跟踪中可以看到的内容: - 由Nginx发起的FIN,ACK关闭会话 - 来自客户的ACK - FIN,来自客户的ACK - 服务器确认

如果客户端尝试使用相同的4个连音符快速重新连接(不到1分钟),则会失败。客户端发送SYN TCP数据包,但Nginx回复时包含一个包含未知序列的ACK(序列号如果非常高,对前一个TCP会话没有任何意义)。

如果在超过1分钟后重复使用相同的4连音符,则没有问题。

提前感谢任何想要解决此问题的人 的Aurelien

1 个答案:

答案 0 :(得分:3)

我不熟悉Nginx,但一般情况下,TCP套接字在关闭几分钟后可以保持TIME_WAIT状态,以便捕获杂散的无序数据包。在TIME_WAIT状态到期之前,不能重用4元组。

查看: