我们刚刚完成构建服务器以将数据存储到磁盘并使用Netty进行了前端处理.在负载测试期间,我们看到Netty扩展到每秒约8,000条消息.鉴于我们的系统,这看起来很低.对于基准测试,我们编写了一个Tomcat前端并运行相同的负载测试.通过这些测试,我们每秒获得大约25,000条消息.
以下是我们的负载测试机的规格:
这是Netty的负载测试设置:
以下是Tomcat的负载测试设置:
我的主要问题是为什么表现如此巨大?有没有明显的Netty可以让它比Tomcat运行得更快?
编辑:这是主要的Netty服务器代码:
NioServerSocketChannelFactory factory = new NioServerSocketChannelFactory();
ServerBootstrap server = new ServerBootstrap(factory);
server.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() {
RequestDecoder decoder = injector.getInstance(RequestDecoder.class);
ContentStoreChannelHandler handler = injector.getInstance(ContentStoreChannelHandler.class);
return Channels.pipeline(decoder, handler);
}
});
server.setOption("child.tcpNoDelay", true);
server.setOption("child.keepAlive", true);
Channel channel = server.bind(new InetSocketAddress(port));
allChannels.add(channel);
Run Code Online (Sandbox Code Playgroud)
我们的处理程序看起来像这样:
public class RequestDecoder extends FrameDecoder {
@Override
protected ChannelBuffer decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) …Run Code Online (Sandbox Code Playgroud)