如何解决"太多打开的文件" netty的问题

时间:2017-03-11 06:34:24

标签: netty

too many open files

当我在我们的产品环境中使用基于netty的http服务器时经过几天的工作后,我发现服务器会输出一个非常严重的错误"太多的打开文件"关闭传入的请求后,这无法自动恢复,这个异常在没有停止的情况下被抛出,我必须手动重启服务器。

我在接受者thead中添加了一个处理程序,如下所示:

    serverBootstrap.channelFactory(new ChannelFactory<ServerChannel>() {
            @Override
            public ServerChannel newChannel() {

                NioServerSocketChannel nioServerSocketChannel = new NioServerSocketChannel();
                nioServerSocketChannel.pipeline().addLast(new ChannelHandler() {
                    @Override
                    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {

                        String name = Thread.currentThread().getName();
                        System.out.println("Thread " + name +" add handler! ");

                    }

                    @Override
                    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {

                    }

                    @Override
                    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {

                        cause.printStackTrace();
                        LOG.error("Error occurs!",cause);

                    }
                });

                return nioServerSocketChannel;
            }
        });

我可以在这里抓住这个例外但不知道如何处理它

如果我可以拒绝这种联系或给予友好的回应?

如何从这个问题中恢复?

非常感谢!

0 个答案:

没有答案