2 geqiandebei geqiandebei 于 2017.07.18 00:17 提问

Netty4.1运行一段时间后监听端口收不到请求 5C

项目用的Netty4.1编写, 情况是运行一段时间后,监听端口就接收不到前端请求,大概过1分钟自动又恢复,貌似运行越久这种状况出现的越是频繁。上线时并发测试还挺不错的。就是这个问题折腾到现在反复重现,求救大神。

关键代码如下:

 EventLoopGroup bossGroup = new NioEventLoopGroup();        //定义一个线程组,这个线程组的作用是用来接收客户端的连接
        EventLoopGroup workerGroup = new NioEventLoopGroup();   //定义一个线程组,这个线程组用来处理业务逻辑
        final EventExecutorGroup e2=new DefaultEventExecutorGroup(32);
        try 
        {
            ServerBootstrap b = new ServerBootstrap();  //定义一个ServerBootstarp类,这个类用来初始化netty服务器

            //将两个线程组绑定到ServerBootstarp中,channel使用的模式为非阻塞模式
            b.group(bossGroup, workerGroup);
            b.channel(NioServerSocketChannel.class);
            b.childHandler(new ChannelInitializer<SocketChannel>() 
            {
                int i = 0;
                @Override
                //当有连接接入的时候会调用这个方法
                public void initChannel(SocketChannel ch) throws Exception
                {
                    //server端发送的是httpResponse,所以要使用HttpResponseEncoder进行编码,将HttpResponse转化为ByteBuffer
                    ch.pipeline().addLast(new HttpResponseEncoder());
                    //server端接收到的是httpRequest,所以要使用HttpRequestDecoder进行解码,将HttpRequset解码为ByteBuffer
                    ch.pipeline().addLast(new HttpRequestDecoder());
                    //处理接收HTTP报文不全的特殊设置
                    ch.pipeline().addLast("aggregator", new HttpObjectAggregator(3200));
                    //收到客户端的连接之后就调用HttpServerInboundHandler来处理
                    //ch.pipeline().addLast(new HttpServerInboundHandler());
                    ch.pipeline().addLast(e2,new HttpServerInboundHandler());
                }
            });

            b.option(ChannelOption.SO_BACKLOG, 1024);
            b.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS,30);
            b.childOption(ChannelOption.SO_KEEPALIVE, false);

            ChannelFuture f = b.bind(port).sync();  //和套接字的绑定类似,监听班底的port端口
            f.channel().closeFuture().sync();   //等待结束
Csdn user default icon
上传中...
上传图片
插入图片