2014-06-29 109 views
1

我是新用戶netty。我正在使用netty 4.0.19-Final版本。我正在用50個客戶端負載測試EchoServer示例。以下是我的配置。我總是得到大約300毫秒的延遲。我正試圖將延遲降低到大約100微秒。有什麼我可以嘗試實現所需的性能?我所有的客戶端都是持久客戶端,並會以10毫秒的延遲發送消息。Netty延遲問題

 ServerBootstrap b = new ServerBootstrap(); 
     b.group(workerGroup) 
       .channel(NioServerSocketChannel.class) 
       .localAddress(NetUtil.LOCALHOST, Integer.valueOf(8080)) 
       .option(ChannelOption.SO_BACKLOG, 128) 
       .childOption(ChannelOption.SO_KEEPALIVE, true) 


       .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) 
       .childOption(ChannelOption.SO_SNDBUF, 1045678) 
       .childOption(ChannelOption.SO_RCVBUF, 1045678) 
       .option(ChannelOption.TCP_NODELAY, true) 
       .childOption(ChannelOption.TCP_NODELAY, true) 
       // .handler(new LoggingHandler(LogLevel.INFO)) 
       .childHandler(new ChannelInitializer<SocketChannel>() { 

        @Override 
        public void initChannel(SocketChannel ch) 
          throws Exception { 
         ch.pipeline() 
         //.addLast(new LoggingHandler(LogLevel.INFO)) 
           .addLast(new EchoServerHandler()); 
        } 
       }); 

     // Start the server. 
     ChannelFuture f = b.bind(PORT).sync(); 

     // Wait until the server socket is closed. 
     f.channel().closeFuture().sync(); 

      EchoServerHandler: 
    @Override 
    public void channelRead(ChannelHandlerContext ctx, Object msg) { 
     ctx.write(msg); 

    } 

    @Override 
    public void channelReadComplete(ChannelHandlerContext ctx) { 
     ctx.flush(); 
    } 

    @Override 
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { 
     // Close the connection when an exception is raised. 
     cause.printStackTrace(); 
     ctx.close(); 
    } 

回答

0

嘗試調用ctx.writeAndFlush(......),你可能還需要調整緩衝區大小等