netty
喧嚣的人
这个作者很懒,什么都没留下…
展开
-
NIO中Epoll Bug产生的原因以及Netty中是如何解决的
JDK NIO中Epoll空轮询Bug产生的原因以及Netty中是如何解决的 产生原因 正常情况下,selector.select()操作是阻塞的,只有被监听的fd有读写操作时,才被唤醒。但是,在这个bug中,没有任何fd有读写请求,但是select()操作依旧被唤醒很显然,这种情况下,selectedKeys()返回的是个空数组,然后按照逻辑执行到while(true)处,循环执行,导致死循环。 Netty的解决方法 对Selector的select操作周期进行统计,每完成一次空的select操作进行原创 2020-12-26 16:59:49 · 1085 阅读 · 0 评论 -
NIO与零拷贝
NIO与零拷贝 什么是零拷贝? 零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。(一句话,减少甚至避免CPU Copy操作)。 传统的IO拷贝技术 分析:传统的IO拷贝技术需要经过四次拷贝(CPU copy 和 DMA copy),四次的状态转换(用户态和内核态),效率较为低下。 使用mmap优化后原创 2020-12-25 20:03:06 · 179 阅读 · 0 评论