.千山. 2017-07-17 16:17 采纳率: 0%
浏览 3708
已结题

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

项目用的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();   //等待结束
  • 写回答

2条回答

  • zqbnqsdsmd 2018-08-02 16:05
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制