我使用的是netty-4.0.32.Final。以下是我的频道配置。
EventLoopGroup elGroup = new NioEventLoopGroup();
bootstrap = new ServerBootstrap();
bootstrap.group(elGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 15000)
.option(ChannelOption.SO_REUSEADDR, true)
.option(ChannelOption.MAX_MESSAGES_PER_READ, Integer.MAX_VALUE).option(ChannelOption.TCP_NODELAY, true)
.option(ChannelOption.SO_RCVBUF, Integer.MAX_VALUE)
.option(ChannelOption.SO_SNDBUF, Integer.MAX_VALUE)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new HttpServerCodec());
p.addLast(new HttpObjectAggregator(Integer.MAX_VALUE));
p.addLast(new HttpRequestHandler(router, monitor, fileWriter,kafkaWriter, pluginManager,redisConnectionPool));
}
});
甚至我们使用EpollEventLoopGroup尝试使用EpollServerSocketChannel,但是我们在AB中获得了以下结果,用于巨大的有效负载POST请求。
2858byte - post.json
每秒请求数: 3452.96 [#/ sec](平均值)
每次请求的时间:72.402 [ms](平均值)
但是,当我们减少请求中的有效负载数据时,结果如下。
277byte - post3.json
每秒请求数: 10085.06 [#/ sec](平均值)
每次请求的时间:24.789 [ms](平均值)
但是,当我们发出GET请求时,我们会得到以下结果。
每秒请求数: 22592.77 [#/ sec](平均值)
每次请求的时间:11.065 [ms](平均值)
任何人都可以指导我如何改善巨大的有效负载POST请求的性能。
P.S:我们的请求的最大值将具有巨大的有效载荷。
答案 0 :(得分:0)
有些信息可能对您有所帮助:
bossGroup
和workerGroup
可能效果更好(请参阅netty网站上的示例)。netstat -naplt|grep yourport
可能看一些)。我一直在测试Netty HTTP(只是一个简单的测试,小数据)性能,它可以接近每秒200000个请求(多个客户端和异步通过apache HttpAsyncClient并使用PoolingNHttpClientConnectionManager来保持重用TCP连接)。
最后,查看Netty示例是一个好主意。