GaussDB(DWS) TCP的KeepAlive(Windows、Linux)

网友投稿 921 2022-05-30

1. 什么是KeepAlive?

简单来说,KeepAlive就是为了防止TCP连接中,链路断开,而连接两端无法侦测到的问题。它的原理其实就是在连接空闲的时候,向对方发送一个空白帧(60 bytes),让对方应答(54 bytes)。数据来源:wiki

就是说,在连接空闲keepalive-idle(也有叫keepalive-time的,比如微软)时间后,以keepalive-interval间隔,向对方发送总共keepalive-count帧(也有叫keepalive-retry。微软叫TcpMaxDataRetransmissions)。如果对方不应答,认为连接已经断开。

关于此问题的最权威解释,请参考 IETF的文档。在其中搜索"TCP Keep-Alives"。

2. 怎么设置

Windows

编码:

打开或关闭:请参考微软的MSDN:setsockopt 这个只能设置打开或者关闭keep alive。

具体参数的设置,请参考MSDN里WSAIoctl章节里关于KeepAlive的设置,但是不可修改count值。

微软里,windows Server 2003, XP, 2000里TcpMaxDataRetransmissions的值被设置为5,可以通过注册表设置,而Vista以后,这个值被设置为了10,并且不可改。

注册表:

KeepAliveTime KeepAliveInterval TcpMaxDataRetransmissions设置完需要重启电脑

Linux

系统级:

# 查询 cat /proc/sys/net/ipv4/tcp_keepalive_time sysctl net.ipv4.tcp_keepalive_time

#修改 vim /etc/sysctl.conf     net.ipv4.tcp_keepalive_intvl = 30     net.ipv4.tcp_keepalive_time = 30     net.ipv4.tcp_keepalive_probes = 9 sysctl -p

GaussDB(DWS) TCP的KeepAlive(Windows、Linux)

代码级:

很简单了,见这里

Gauss AP EI企业智能 数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:h5轻应用开发前必读
下一篇:《R数据科学实战:工具详解与案例分析 》 —1.1.2 read.delim/delim2—特定分隔符数据读取
相关文章