Netty学习笔记——keeplive和idle检测

447 阅读1分钟

1、为什么需要keeplive

相当于接订餐电话时,对方没有相应,你这边说的一句“您还在不?”

以下三种情况需要发送keeplive

  • 对端异常崩溃
  • 对端在,处理不过来
  • 对端在,但不可达

2、怎么设计keeplive?

3、应用层为什么还需keeplive?

  • 协议层每层的功能不同,关注点也会不同,传输层关注是否“通”,应用层关注是否可服务,类比订餐电话,电话可以通,但不一定有人接
  • TCP层的keeplive默认是关闭,且在经过路由等中转设备的时候有可能被丢弃
  • TCP层的keeplive参数是系统级别的,改动会影响所有应用

4、idle监测是什么?

依旧电话订餐的例子,订餐过程中,对方突然不说话了,你会立马发问:你还在不?

  • 当然不是
  • 一般你会稍微等一会,看对方在这段时间内是有有响应,如果一直无响应,认为对方存在问题了,才会发问:还在不?或是直接挂断电话,关闭连接。

5、Netty中如何开启TCP的keeplive和idle监测