我正在开发一个通过TCP连接到服务器的客户端。服务器被配置为,如果一台服务器停机,则与另一台服务器建立连接。
我的要求是,如果在2s内没有与第一台服务器建立TCP连接,客户端需要与第二服务器建立连接。
下面是我基于测试的观察-- TCP消息由客户端发送到第一台服务器以建立连接。由于第一服务器关闭,在1s后,TCP SYN重传被发送到第一服务器。经过2S(由于处理和网络延迟),TCP消息由客户端发送到第二服务器。所以需要3s (1s + 2s)才能将SYN消息发送到第二台服务器,这不是我想要的。我希望TCP消息在2s内被发送到第二台服务器。
为了在2s内将TCP消息发送到第二台服务器,我希望避免TCP重传。
我尝试在/etc/sysctl.conf中设置net.ipv4.tcp_syn_retries=0。但是我得到了一个TCP SYN重传。
那么,有什么方法可以在不改变内核源代码的情况下从用户空间禁用TCP重传呢?
发布于 2016-02-10 05:46:56
我的要求是,如果在2s内没有与第一台服务器建立TCP连接,客户端需要与第二服务器建立连接。
在本例中,只需在客户端执行超时2秒的连接,如果连接不成功,请重试与另一台服务器。一旦关闭了套接字,内核将停止尝试连接到第一个服务器。这比篡改TCP的内置可靠性行为和时间更好,而且更独立于特定的平台。
https://stackoverflow.com/questions/35307651
复制相似问题