当缓冲区大小增加超过默认值和/或在ServerBootStrap对象中选择(option或childOption)不正确的覆盖位置时,Netty似乎会降低上载/下载速度.当连接具有更大的延迟(~300ms)时,这变得更加明显
设置:
Netty客户端位于MacOS上,仅具有默认值.使用具有300ms DNS延迟的"网络链路调节器".默认值:SendBuffer/ReceiveBuffer/LowWaterMark/HighWaterMark - 128KB/128KB/32KB/64KB.
Netty服务器在Windows 8.1上,默认值为SendBuffer/ReceiveBuffer/LowWaterMark/HighWaterMark - 64KB/64KB/32KB/64KB.
Netty 4.1.6版最终版.
使用带有设置的IO图测量wireshark的速度:Y轴 - > SUM(Y字段),Y字段 - > tcp.len
设备在本地网络上.
结果(速度值):
服务器 - >客户端传输(将SO_SNDBUF和水印低/高值设置为0.5*SO_SNDBUF/SO_SNDBUF):
Setting location\SO_SNDBUF | 64KB | 128KB | 1024KB
-----------------------------------------------------------------
option | 3.6MB/s| 3.6MB/s| 3.6MB/s
childOption | 0.2MB/s| 0.5MB/s| 3.6MB/s
Run Code Online (Sandbox Code Playgroud)
客户端 - >服务器传输(设置SO_RCVBUF):
Setting location\SO_RCVBUF | 64KB | 128KB | 1024KB
-----------------------------------------------------------------
option | 0.2MB/s| 0.5MB/s| 3.6MB/s
childOption | 3.6MB/s| 0.4MB/s| 3.6MB/s
Run Code Online (Sandbox Code Playgroud)
服务器代码:
"args"值:
"sendToClient"/"sendToServer"(隐含)用于传输方向.覆盖类型的"option"/"childOption".缓冲值的"1"/"2"/"3".
ObjectEchoServer.java
import …Run Code Online (Sandbox Code Playgroud)