Netty 的使用 WRITE_SPIN_COUNT

Usage of Netty WRITE_SPIN_COUNT

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

写自旋计数用于控制每个 Netty 写操作调用底层 socket.write(...) 的次数。请记住,从 Netty 的缓冲区写入底层套接字可能不会一次性传输所有数据。在 I/O 线程可以花费多少时间尝试完全写入单个缓冲区之间存在平衡,如果该缓冲区未完全写入,则 I/O 线程必须注册写入事件并当底层套接字可写时唤醒。后面的操作可能会很昂贵,因为 通常 套接字是可写的,并且 I/O 线程一旦尝试等待 select 机制就会被唤醒。我描述的可以在NioSocketChannel.

中看到

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