socket心跳机制so_keepalive的三个参数详解
SO_KEEPALIVE 保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。
设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测分节(keepalive probe)。这是一个对方必须响应的TCP分节.它会导致以下三种情况:
1、对方接收一切正常:以期望的ACK响应,2小时后,TCP将发出另一个探测分节。
2、对方已崩溃且已重新启动:以RST响应。套接口的待处理错误被置为ECONNRESET,套接 口本身则被关闭。
3、对方无任何响应:源自berkeley的TCP发送另外8个探测分节,相隔75秒一个,试图得到一个响应。在发出第一个探测分节11分钟15秒后若仍无响应就放弃。套接口的待处理错误被置为ETIMEOUT,套接口本身则被关闭。如ICMP错误是“host unreachable(主机不可达)”,说明对方主机并没有崩溃,但是不可达,这种情况下待处理错误被置为 EHOSTUNREACH。
有关SO_KEEPALIVE的三个参数详细解释如下:
(16)tcp_keepalive_intvl,保活探测消息的发送频率。默认值为75s。
发送频率tcp_keepalive_intvl乘以发送次数tcp_keepalive_probes,就得到了从开始探测直到放弃探测确定连接断开的时间,大约为11min。
(17)tcp_keepalive_probes,TCP发送保活探测消息以确定连接是否已断开的次数。默认值为9(次)。
注意:只有设置了SO_KEEPALIVE套接口选项后才会发送保活探测消息。
(18)tcp_keepalive_time,在TCP保活打开的情况下,最后一次数据交换到TCP发送第一个保活探测消息的时间,即允许的持续空闲时间。默认值为7200s(2h)。
相关推荐
这是关于WinSock_TCP_keepalive内容的知识。 通信机制中,对方是否断开,有两种判断方法。 一种就是使用心跳包,另一种就是使用KEEPALIVE.这就是关于keepalive的介绍资料
Echo service using TCP sockets between two systems with socket options SO_REUSEADDR, SO_KEEPALIVE, TCP_NODELAY and SO_LINGER
设置好keepalive以后,我们通过实验来看看当client异常退出或是网络断掉的情况下,keepalive怎么通知我们异常断开的情况。这里采用select模式,实验环境为XP系统和Win7系统,几种情况返回值如下: 1. 正常断开 ...
TCPIP教程.zip 本教程内容包括: 以太网 TCP/IP协议: 三次握手,四次握手,keepalive选项 DNS协议 UDP协议 RPC原理 NFC协议 链路层介绍
Linux内置支持keepalive机制,为了使用它,你需要使能TCP/IP网络,为了能够配置内核在运行时的参数,你还需要procfs和sysctl的支持。 这个过程涉及到keepalive使用的三个用户驱使的变量: tcp_keepalive_time...
TCP keepalive:TCP keepalive:参考于RFC1122 TCP内建的option,由c socket或kernel设置参数: TCP_KEEPCNT - tcp_keepalive_probes (重试几次决定断线) TCP_KEEPINTVL - tcp_keepalive_intvl(ACK传了多久没回应要重试)...
nginx upstream 连接池 ngx_http_upstream_keepalive-d9ac9ad67f45.tar.gz
中文名: TCP.IP路由技术[第二卷](CCIE职业发展系列) 原名: Routing TCP.IP,Volume 2 作者: Jeff Doyle译者: 毕立波资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115100962发行时间: 2002年 地区: ...
在默认参数下,若tcp对端不通知就掉线需要等待超过2个小时本端才能确认对端掉线。使用keepalive之后,多次keepalived探测失败表明链路已经断开,可及时得到链路是否存活的信息。这样做的好处是不需要自己实现心跳...
Keepalive问题 1) 使用show interface查看是否keepalive被禁用,或校验keepalive被正常配置2) 如果keepalive设置错误,进入配置模式并在接口上指定keepalive间隔 封装类型 1) 校验两端路由器的封装方式相同...
:link: 净keepalive 使用模块的Node缺少的( TCP_KEEPINTVL和TCP_KEEPCNT ) SO_KEEPALIVE套接字选项设置程序和获取程序。 经过测试 :penguin: linux & :green_apple: osx ( amd64和arm64都应该) :smiling_face_...
Mina开源框架 心跳机制详解
先看keepalive的用法:有三个参数,开放给应用层使用 sk->keepalive_probes:探测次数,重试次数 sk->keepalive_time 探测的心跳间隔,TCP链接在多少秒之后没有数据报文传输启动探测报文 sk->keepalive_intvl 探测...
在使用Socket方式时,请打开TCP/IP的KeepAlive机制,并将检测超时设置为10秒,这样 可以快速检测出网络故障,并做出相应处理。 两个(或多个)串口服务器透明传输 串口服务器A设置为TCP/IP Server模式,串口服务器B...
Linux平台下的看门狗驱动,在8180下运行良好,移植方便
一个对 nginx 有 lua 支持的 tcp 模块。 大多数代码是从 ngx-lua-module 复制而来的,并且指令/常量/APIs 计划与 ngx-lua 模块兼容。 感谢ngx-lua模块的出色工作。 使用 nginx-1.4.4 测试。 指令 服务器 听 so_...
nginx第三方插件,用于连接mysql数据库,提升nginx连接mysql的性能,
KeepAlive
这是我在学习socket时对socket建立之后连接情况监测方法的总结,希望对你有所帮助。
keepalive_timeout 65; client_max_body_size 10m; client_body_buffer_size 4096k; php_ini_path /usr/local/php/etc/php.ini; server { listen 80; server_name localhost; location /...