Netty 增加接收缓冲区大小
增加接收缓冲区
使用netty时发现每次channelRead触发时,对应的消息大小总是少于1024,查了下资料,可以通过两种如下方式设置
.option(ChannelOption.SO_RCVBUF, 1024*4)
.option(ChannelOption.RCVBUF_ALLOCATOR,new FixedRecvByteBufAllocator(4096))
//FixedRecvByteBufAllocator也可以换为AdaptiveRecvByteBufAllocator
第一种参数似乎不起作用,找到了这个issue,根据里面的说法,这个参数传到os层,由于不同os的差异,实际上这个参数未必会和设置的一样,最终缓冲区大小还是由os决定的。
我的测试环境是macOs,通过man getsockopt,看到SO_RCVBUF这个参数是动态变化的,会有一个自适应的过程。
在netty的测试程序,增加发送数据大小为10MB后,发现channelRead经过一定次数后,消息大小从最初的1024增加到了16384。