连接假死情况
1.网络设备出现故障,例如网卡,机房等。底层的TCP连接已经断开,但应用程序没有感知到,仍然占着资源。
2.公网网络不稳定,出现丢包。若果连续出现丢包,这时现象就是客户端数据发不出去,服务端也一直收不到数据,就这么一直耗着。
3.应用程序线程阻塞,无法进行数据读写。
Netty提供监测连接假死手段空闲状态检测器。
空闲状态监测器
IdleStateHandler
监测读和写数据的空闲时间是否太长了。
- readerIdleTimeSeconds 读的空闲时间,单位秒。
- writerIdleTimeSeconds 写的空闲时间,单位秒。
- allIdleTimeSeconds 读和写加在一起的空闲时间,单位秒。
对应的发生的事件:
ChannelDuplexHandler
既可以作为入站处理器,又可以作为出站处理器。
服务端代码
package com.xkj.server;
import com.xkj.protoc