使用Netty WRITE_SPIN_COUNT

时间:2015-08-03 08:14:20

标签: netty

我想了解Netty频道选项“WRITE_SPIN_COUNT”的用法。 将此值设置为高于或低于默认值(16)的影响是什么。应该这样设置。? 这是我从Netty文档中得到的,但不清楚为什么以及何时应该设置此值:http://netty.io/4.0/api/io/netty/channel/DefaultChannelConfig.html#getWriteSpinCount() 根据文件说: 返回写操作的最大循环计数,直到WritableByteChannel.write(ByteBuffer)返回非零值。它类似于自旋锁用于并发编程的内容。它根据运行JVM的平台提高内存利用率和写入吞吐量。默认值为16。

1 个答案:

答案 0 :(得分:5)

写入旋转计数用于控制每次Netty写入操作调用基础socket.write(...)的次数。请记住,从Netty的缓冲区写入底层套接字可能无法一次性传输所有数据。尝试完全写入单个缓冲区可以花费多少I / O线程时间,如果没有完全写入该缓冲区,那么I / O线程必须注册写入事件并在底层套接字是可写的。后面的操作可能很昂贵,因为通常套接字是可写的,并且I / O线程一旦尝试等待选择机制就会被唤醒。我所描述的内容可以在NioSocketChannel中看到。

我对这些类型的配置选项的建议是,如果您正在观察性能问题,然后针对您的用例进行基准测试,或保留默认值。基准测试可能会发现您的问题出在其他地方,或者至少可以帮助您了解为特定用例更改此值的影响。