了解TCP动态

时间:2015-04-01 08:50:23

标签: tcp timeout

我的体验: 我们有一个连接到rabbitmq服务器的应用服务器。 随着时间的推移,从rabbitmq服务器看到的ESTABLISHED连接数量会增加,但来自应用服务器的计数仍然相当稳定。

我在两者上运行:

root@app01:~# netstat -ant | grep EST | grep 5672 | grep 172.25.12.48
tcp        0      0 172.25.12.48:50587      10.48.64.230:5672       ESTABLISHED
tcp        0      0 172.25.12.48:50588      10.48.64.230:5672       ESTABLISHED 

root@rabbit01:~# netstat -ant | grep EST | grep 5672 | grep 172.25.12.48
tcp6       0      0 10.48.64.230:5672       172.25.12.48:38408      ESTABLISHED
tcp6       0      0 10.48.64.230:5672       172.25.12.48:50588      ESTABLISHED
tcp6       0      0 10.48.64.230:5672       172.25.12.48:33491      ESTABLISHED
tcp6       0      0 10.48.64.230:5672       172.25.12.48:50587      ESTABLISHED
tcp6       0      0 10.48.64.230:5672       172.25.12.48:34541      ESTABLISHED

示例结果将在app服务器上给出6,在rabbitmq服务器上给出15(甚至高达46)。 我重新启动了rabbitmq服务器,显然一切都恢复正常,每边有2个连接。

我假设交换机超时连接或应用程序不正确地终止进程。我正在研究这个,但我想更好地了解TCP行为。

rabbitmq服务器上的当前设置:

tcp_retries1设为3
tcp_retries2设置为15

所以我通常希望看到那些无效的'如果我正确理解论坛,大约13-30分钟后连接就会下降。

然而,看看tcp keepalive值:

tcp_keepalive_time设置为7200(因此在2h后它将发送第一个keepalive探测器。)
tcp_keepalive_intvl是75(所以在第一个之后75秒,它将重新发送探针。)
tcp_keepalive_probes为9(因此它将总共发送9个探测器)

因此,保持活动过程将需要7200+(9 * 75)= 7875,或大约2小时11分钟才能结束。

由于连接(可能)消失,这导致两个问题 1.哪个是正确的?
2.除了可能导致这些无效连接的交换机或应用程序异常终止之外,我是否错过了另一个选项?

来源:https://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html

1 个答案:

答案 0 :(得分:0)

我们的F5就是这个原因。 在空闲超时后,F5会从其表中删除该条目。因此,从应用服务器,连接无效,TCP关闭它们。 但是,从rabbitmq服务器,不知何故,连接仍然是有效的连接。 虽然我不明白为什么交换机能够保持连接状态有效 - 但是,这就是原因。