加载中...
TCP Keepalive 是一种探测长连接是否仍然存活的机制,当连接在一段时间内无数据传输时,一端会定期发送探测报文,若对端持续无响应则判定连接已断并释放资源,防止出现半开连接。

| 中文名 | TCP 保活机制 |
| 所属协议 | TCP |
| 核心参数 | 空闲时间、探测间隔、探测次数 |
| 主要作用 | 探测并清理失效连接 |
| 实现位置 | 操作系统内核 |
TCP Keepalive(TCP 保活)是 TCP 协议栈提供的一种连接存活探测机制,当一条已建立的连接长时间没有数据往来时,本端会自动发送特殊的探测报文,以确认对端是否仍然在线,从而及时发现并清理已经失效的连接。
TCP 连接一旦建立,即使双方长时间不通信,连接状态在两端也会一直保持。若其中一方异常宕机、断电或网络中断而来不及正常关闭连接,另一方可能毫不知情,形成占用资源却永远无法收到数据的半开连接。Keepalive 正是为探测并回收这类连接而设计。
三个关键参数分别控制空闲多久开始探测、探测之间的间隔以及最大探测次数,操作系统通常提供全局默认值,应用程序也可针对单个套接字单独设置。
保活机制常用于长连接服务,如数据库连接池、消息推送、即时通讯和各类需要维持持久连接的后台服务。它能帮助服务器及时释放僵死连接、回收资源,避免连接数被无效连接耗尽。
问:默认的保活时间为什么很长?答:许多系统默认空闲两小时才开始探测,这个值偏保守。对于要求快速感知断线的应用,通常需要在应用层另行实现更短周期的心跳,或显式调小套接字参数。
问:Keepalive 和应用层心跳有何区别?答:Keepalive 由操作系统内核实现,只检测链路层面的连通性;应用层心跳由程序自行发送业务消息,还能顺带检测对端应用是否真正正常工作。

| 中文名 | TCP 保活机制 |
| 所属协议 | TCP |
| 核心参数 | 空闲时间、探测间隔、探测次数 |
| 主要作用 | 探测并清理失效连接 |
| 实现位置 | 操作系统内核 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧