设置正常情况下,我们设置 tcp 的 keepalive 选项的代码如下:
TCP的KeepAlive保活机制
我们通常需要调整触发 KeepAlive 的 idle 时间间隔:
s.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 10)
最后一个参数 10 表示在连接不活跃 10s 后开始 KeepAlive 检测。
s.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 6)
最后一个参数表示每隔 6s 发送一次。
如果不使用 KeepAlive 算法检测连接状态,会导致单方面断开连接后,另一方无法感知。比如 A 在用 recv 函数等待 B 发送数据,
但这时候 B 已经失效,A 会一直等在 recv 函数上不能返回。
node2:/root/test#cat t17.py
import socket
import IN
import struct
import time
b=2
def getnum(x):
b='2'
for y in range(x):
#print y
b=b+'2'
if len(b) == x:
#print '-------------'
#print len(b)
return b
print getnum(1024)
c=getnum(1460)
s &#
tcp keepalive
最新推荐文章于 2024-08-13 10:13:29 发布
TCP Keepalive机制用于检测连接是否依然活跃,防止因中间网络设备问题导致的连接空闲死锁。它通过发送探测报文来确认连接状态,若连续几次未收到响应则断开连接。在服务器端配置Keepalive能有效管理资源,避免无效连接占用资源。
摘要由CSDN通过智能技术生成