![[捂脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_28.8981538.png)
TCP的KeepAlive 机制是在网络层面保证了连接的可用性,它存在以下的不足:
1. KeepAlive 的开关是在应用层开启的,但是具体参数(如重试测试,重试间隔时间)的设置却是操作系统级别的。
2. KeepAlive 的保活机制只在链路空闲的情况下才会起到作用。假如有数据发送,且物理链路已经不通,操作系统这边的链路状态还是 ESTABLISHED,这时会走 TCP 重传机制,默认的 TCP 超时重传,也是一个相当长的过程。
3. KeepAlive 本身是面向网络的,并不面向于应用。当连接不可用,可能是由于应用本身的 GC 频繁,系统 load 高等情况,但网络仍然是通的。此时,应用已经失去了活性,但连接认被认为是可用的。
1. KeepAlive 的开关是在应用层开启的,但是具体参数(如重试测试,重试间隔时间)的设置却是操作系统级别的。
2. KeepAlive 的保活机制只在链路空闲的情况下才会起到作用。假如有数据发送,且物理链路已经不通,操作系统这边的链路状态还是 ESTABLISHED,这时会走 TCP 重传机制,默认的 TCP 超时重传,也是一个相当长的过程。
3. KeepAlive 本身是面向网络的,并不面向于应用。当连接不可用,可能是由于应用本身的 GC 频繁,系统 load 高等情况,但网络仍然是通的。此时,应用已经失去了活性,但连接认被认为是可用的。
展开
2
8