首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP重传定时器覆盖/杀死TCP保持活动计时器,延迟断开连接发现。

问TCP重传定时器覆盖/杀死TCP保持活动计时器,延迟断开连接发现。
EN

Stack Overflow用户
提问于 2015-11-05 19:43:09
回答 2查看 2.2K关注 0票数 0

机器- linux,3.10.19内核

这是在一个大型分布式系统中,有几个服务器和客户机(在相同的和不同的节点/机器上)彼此有TCP连接。

测试用例:

客户端程序节点/机器被关闭(出于目的,测试用例),而服务器了解其断开的唯一途径是通过保持活动计时器(空闲time=40秒,4个探针,探测time=10秒)。

好案例:

在大多数情况下,这都很好,服务器知道客户机在40,70秒内就坏了。

坏案例:

但是,我遇到了另一种独特的情况,即在保持活动计时器运行时,服务器尝试向客户端发送一些数据,然后启动TCP重传定时器,该定时器覆盖/杀死了保持活动计时器。重传计时器需要15分钟才能检测到另一端已经不在了。

15分钟对于服务器来说是实现这一点的一段时间。我正在寻找其他人如何处理这种情况的方法。我需要调整我的重传计时器值吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-11-07 01:33:20

有一个完全独立的配置来重新传输超时。

来自Linux的tcp.7手册页

tcp_retries2 (整数;默认值: 15;自Linux2.2以来) 在放弃之前,TCP数据包在既定状态下被重新传输的最大次数。默认值为15,这对应于大约13到30分钟的持续时间,这取决于重传超时。RFC 1122规定的100秒的最小限制通常被认为太短了。

这很可能是您想要调整的值,以更改检测连接是否消失所需的时间。

票数 1
EN

Stack Overflow用户

发布于 2017-12-21 07:51:32

linux内核版本4.3.0-1-AMD 64也有同样的问题:

  • 我使用了一个服务器和一个客户端,连接到同一个交换机。
  • 在以下情况下,TCP保持生存机制在客户端和服务器上正确工作:
代码语言:javascript
复制
- When no message is sent between the cable disconnection and the socket disconnection (by the tcp keep-alive mecanism).
- When the cable is disconnected between the client/server and the switch (which sets the link state to down) even if the client/server application tries to send a message.

​

  • 当交换机的另一端解除连接时,TCP保持活动的帧被传输,直到发送应用消息为止。然后,发送TCP重传帧,停止发送TCP保持活动的帧,从而防止套接字被关闭。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33553410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档