我遇到了一个问题,我注意到在netty 4.0.28中将多线程编写到一个或多个通道时具有可伸缩性。关于这个话题我什么都找不到。我发现只有"嘿,多线程提高了吞吐量"但是我的问题与此相反。
一般来说,写入一个通道比写入多个通道要快,我不知道为什么会这样,特别是在等待写入完成时。
我得到的结果是(writeAndFlush中位数,加温和多次测试运行):
我的设置:
我的期望:
自举
Bootstrap b = new Bootstrap();
b.group(eventLoopGroup);
b.channel(NioSocketChannel.class);
b.handler(new ChannelInitializer<NioSocketChannel>() {
@Override
public void initChannel(NioSocketChannel ch) throws Exception {
ch.pipeline().addLast(new StringEncoder());
}
});
// Start the client.
ChannelFuture f = b.connect(socketAddress).await();
channel = f.channel();
写
// non-blocking
channel.writeAndFlush(message, channel.voidPromise());
或
// blocking
channel.writeAndFlush(message).await();