Java Netty服务器响应时间不一致
我创建了一个netty tcp客户端和服务器。我计算客户端的总响应时间。当我做负载测试时,我发现每8个请求都需要很长时间。原因可能是什么?任何关于提高性能的建议Java Netty服务器响应时间不一致,java,tcp,netty,Java,Tcp,Netty,我创建了一个netty tcp客户端和服务器。我计算客户端的总响应时间。当我做负载测试时,我发现每8个请求都需要很长时间。原因可能是什么?任何关于提高性能的建议 Connecting to localhost:9065 PROCESSING TIME [32.508 ms] PROCESSING TIME [1.952 ms] PROCESSING TIME [2.157 ms] PROCESSING TIME [2.818 ms] PROCESSING TIME [1.788 ms] PROC
Connecting to localhost:9065
PROCESSING TIME [32.508 ms]
PROCESSING TIME [1.952 ms]
PROCESSING TIME [2.157 ms]
PROCESSING TIME [2.818 ms]
PROCESSING TIME [1.788 ms]
PROCESSING TIME [368.311 ms]
PROCESSING TIME [3.107 ms]
PROCESSING TIME [1.856 ms]
PROCESSING TIME [1.973 ms]
PROCESSING TIME [2.14 ms]
PROCESSING TIME [2.022 ms]
PROCESSING TIME [1.781 ms]
PROCESSING TIME [1.967 ms]
PROCESSING TIME [411.338 ms]
PROCESSING TIME [3.252 ms]
PROCESSING TIME [1.769 ms]
PROCESSING TIME [1.746 ms]
PROCESSING TIME [4.04 ms]
PROCESSING TIME [1.758 ms]
PROCESSING TIME [1.81 ms]
PROCESSING TIME [1.817 ms]
PROCESSING TIME [1.686 ms]
PROCESSING TIME [317.336 ms]
PROCESSING TIME [3.084 ms]
PROCESSING TIME [3.624 ms]
PROCESSING TIME [3.147 ms]
PROCESSING TIME [1.95 ms]
PROCESSING TIME [2.16 ms]
PROCESSING TIME [1.987 ms]
PROCESSING TIME [1.9 ms]
PROCESSING TIME [335.572 ms]
PROCESSING TIME [1.835 ms]
PROCESSING TIME [1.707 ms]
PROCESSING TIME [1.896 ms]
PROCESSING TIME [3.084 ms]
我的客户端代码使用netty 5.0.0.Alpha2,服务器使用netty 4.0.30.Final
我的客户端代码与
我的服务器代码是
final EventLoopGroup parentGroup = new NioEventLoopGroup(5);
final EventLoopGroup childGroup = new NioEventLoopGroup();
try
{
final ServerBootstrap b = new ServerBootstrap();
b.group(parentGroup, childGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 100).handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>()
{
@Override
public void initChannel(final SocketChannel ch) throws Exception
{
final ChannelPipeline p = ch.pipeline();
if (sslCtx != null)
{
p.addLast(sslCtx.newHandler(ch.alloc()));
}
NettyServer.this.framer = (Framer) Class.forName(NettyServer.this.manifest.getFramingConfig()).newInstance();
NettyServer.this.headerClass = Class.forName(NettyServer.this.manifest.getHeaderConfig());
final NettyServerHandler nettyServerHandler = new NettyServerHandler(NettyServer.this.moduleName, NettyServer.this.framer, NettyServer.this.headerClass,
NettyServer.this.requestProcessor.clone());
p.addLast(nettyServerHandler);
}
});
// Start the server.
final ChannelFuture f = b.bind(this.port).sync();
// Wait until the server socket is closed.
f.channel().closeFuture().sync();
}
finally
{
// Shut down all event loops to terminate all threads.
parentGroup.shutdownGracefully();
childGroup.shutdownGracefully();
}
final EventLoopGroup parentGroup=new NioEventLoopGroup(5);
final EventLoopGroup childGroup=new NioEventLoopGroup();
尝试
{
final ServerBootstrap b=新的ServerBootstrap();
b、 组(parentGroup,childGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG,100).handler(新的LoggingHandler(LogLevel.INFO))
.childHandler(新的通道初始值设定项()
{
@凌驾
public void initChannel(最终SocketChannel ch)引发异常
{
最终管道p=通道管道();
如果(sslCtx!=null)
{
p、 addLast(sslCtx.newHandler(ch.alloc());
}
NettyServer.this.framer=(framer)Class.forName(NettyServer.this.manifest.getFramingConfig()).newInstance();
NettyServer.this.headerClass=Class.forName(NettyServer.this.manifest.getHeaderConfig());
final NettyServerHandler NettyServerHandler=新的NettyServerHandler(NettyServer.this.moduleName,NettyServer.this.framer,NettyServer.this.headerClass,
NettyServer.this.requestProcessor.clone());
p、 addLast(nettyServerHandler);
}
});
//启动服务器。
final ChannelFuture f=b.bind(this.port).sync();
//等待服务器套接字关闭。
f、 通道().closeFuture().sync();
}
最后
{
//关闭所有事件循环以终止所有线程。
parentGroup.shutdownGracefully();
childGroup.shutdownGracefully();
}
您的管道和引导配置是什么?您对如何实现客户机/服务器有何见解?