1)如果客户端只对发送感兴趣,不对接收感兴趣,您可以像下面这样禁用从通道读取:
如果客户端只需向服务器发送数据,而不需要从服务器接收数据,则可以通过以下方式禁用从通道读取:
channel.disable(OP_READ);
channel.setReadable(false);
2) 通过为每个客户端添加多个客户端通道,可以很容易地提高吞吐量,并且还可以扩展。
3) 并且您可以进行以下调整以改善总体性能(用于读取/写入)
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
executionHandler1,
new MessageDecoderHandler(),
new MessageEncoderHandler(),
executionHandler2,
new BusinessLogicHandler1(),
new BusinessLogicHandler2());
}
});
将通道的writeBufferHighWaterMark设置为最佳值(确保设置大值不会创建拥塞)
bootstrap.setOption("writeBufferHighWaterMark", 10 * 64 * 1024);
设置SO_READ和SO_WRITE缓冲区大小
bootstrap.setOption("sendBufferSize", 1048576);
bootstrap.setOption("receiveBufferSize", 1048576);
启用TCP No delay
bootstrap.setOption("tcpNoDelay", true);