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

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 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教