Selector Bug总结

Selector BUG出现的原因

若Selector的轮询结果为空,也没有wakeup或新消息处理,则发生空轮询,CPU使用率100%,

Netty的解决办法

对Selector的select操作周期进行统计,每完成一次空的select操作进行一次计数,

若在某个周期内连续发生N(512)次空轮询,则触发了epoll死循环bug。

重建Selector,判断是否是其他线程发起的重建请求,若不是则将原SocketChannel从旧的Selector上去除注册,重新注册到新的Selector上,并将原来的Selector关闭。


RPC通讯的主题:IO模型  数据协议 线程模型

猜你喜欢

转载自blog.csdn.net/u011121287/article/details/83302743