GaussDB(DWS) TCP的KeepAlive(Windows、Linux)
【摘要】 简单介绍TCP协议中的KeepAlive
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
代码级:
很简单了,见这里
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
热门文章
评论(0)