增加接收緩沖區
使用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。