我正在单个实例windows服务器2k8R2蔚蓝VM上运行一个专有的客户机/服务器应用程序。
客户端非常依赖于与服务器的连接。但是,如果我花了几分钟没有任何活动,Azure端的某个东西会强行关闭连接(据我从日志中可以看出)。如果这是天蓝色本身或窗户的作用,我就不确定了。
如果没有实现某种保活功能(因为这个软件是专有的),那么我是否可以扩展这个超时呢?
我看到了几个关于为负载平衡情况更改idletimeout的引用,但这只是一个实例。
提前谢谢!
发布于 2015-01-23 22:32:04
您正在您的VM前面的软件负载均衡器的设计特性。默认情况下,它将在4分钟后关闭任何空闲连接,但您可以将超时配置为这4到30分钟之间的任意值:
但是,在基础设施和应用程序端都有一些保持生命的好做法。在将来,它会给你节省更多的麻烦。
编辑以添加Azure现在支持空闲连接上的TCP重置
发布于 2017-05-20 09:12:21
Azure VM的TCP设置
Azure VM通过使用NAT (网络地址转换)与公共Internet进行通信。NAT设备为Azure VM分配公共IP地址和端口,允许该VM建立与其他设备通信的套接字。如果数据包在特定时间后停止通过该套接字,NAT设备将终止映射,该套接字可供其他VM自由使用。
这是一种常见的NAT行为,它可能会导致基于TCP的应用程序上的通信问题,这些应用程序期望套接字在超时期间后得到维护。对于处于已建立连接状态的会话,需要考虑两个空闲超时设置:
通过Azure负载平衡器入站。这个超时默认为4分钟,并且可以调整到30分钟。出站使用SNAT (源NAT)。此超时设置为4分钟,无法调整。为了确保连接不会超过超时限制,您应该确保您的应用程序保持会话活动,或者您可以配置底层操作系统来这样做。Linux和Windows系统使用的设置不同,如下所示。
对于Linux,您应该更改下面的内核变量。net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes =8
对于Windows,您应该更改下面的注册表值。KeepAliveInterval = 30 KeepAliveTime = 120 TcpMaxDataRetransmissions =8
上述设置确保在空闲时间为2分(120秒)后发送“保持活动”数据包,然后每30秒发送一次。如果其中8个数据包失败,会话将被丢弃。
https://serverfault.com/questions/661704
复制相似问题