本文主要是介绍Selector Bug总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Selector BUG出现的原因
若Selector的轮询结果为空,也没有wakeup或新消息处理,则发生空轮询,CPU使用率100%,
Netty的解决办法
对Selector的select操作周期进行统计,每完成一次空的select操作进行一次计数,
若在某个周期内连续发生N(512)次空轮询,则触发了epoll死循环bug。
重建Selector,判断是否是其他线程发起的重建请求,若不是则将原SocketChannel从旧的Selector上去除注册,重新注册到新的Selector上,并将原来的Selector关闭。
RPC通讯的主题:IO模型 数据协议 线程模型
这篇关于Selector Bug总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!