机器 - linux,3.10.19 内核
这是在一个大型分布式系统中,有多个服务器和客户端(在相同以及不同的节点/机器上)彼此之间具有 TCP 连接。
测试用例:
客户端程序节点/机器被关闭(故意,测试用例),服务器知道他断开连接的唯一方法是通过keepalive计时器(空闲时间=40秒,4次探测,探测时间=10秒) .
好的案例:
这在大多数情况下都可以正常工作,服务器会在 [40,70] 秒内知道客户端已关闭。
坏情况:
但是我遇到了另一种独特的情况,即当保活计时器运行时,服务器尝试向客户端发送一些数据,这反过来又启动了覆盖/终止保活计时器的 TCP 重传计时器。重传计时器需要大约 15 分钟才能检测到另一端不再存在。
15 分钟对于服务器来说是很长的时间来实现这一点。我正在寻找其他人如何处理这种情况的方法。我需要调整我的重传计时器值吗?
谢谢!