netty analyst(3)-write performance improvement

netty提供了三种方式和写相关:

(1) write(msg) ⇒ pass through pipeline
(2) flush()=> gathering write of previous written msgs
(3) writeAndFlush()=>short-cut for write(msg) and flush()

通过前文的分析可知,写并没有真正的去发送给远端,而是缓存起来。而flush可以理解为开始写。所以在实际使用netty(包括netty的案例)时,都很简单的使用了writeAndFlush(),简单明了。

所以服务器在发送数据时,则面对这样的情况:
write 1-> flush 1
write 2-> flush 2
write 3-> flush 3

netty作者提及作为最佳实践应该“Limit flushes as much as possible as syscalls are quite expensive.” 继续阅读netty analyst(3)-write performance improvement

netty analyst(2)-possible OOM for write

把netty引入项目后,检索了各种坑或者常见可能错误用法以避免犯错,其中不少文章提到:netty在响应请求端缓慢时,有可能OOM,例如文章http://www.wtoutiao.com/a/2331320.html。
鉴于之前没有深入研究netty的代码,所以不敢冒然使用各种文章提到的解决方案:(1)没有实际测试,所以不是100%肯定会出现;(2)各种文章提及的方案各有利弊,同时涉及到一些参数的设置,不言而喻,一旦有设置的需要,就有设置合理或者不合理的情况。总之,用的好锦上添花,用的不好适得其反。 继续阅读netty analyst(2)-possible OOM for write