我想在服务器上打开2端口,1用于生产,2用于监控,1个客户端用于telnet到另一台服务器。但是我的服务器在运行1天时总是得到“许多打开文件”的通知,我的代码如下:
ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
private PipelineServer ps= new PipelineServer(listenMessage1);
bootstrap.setPipelineFactory(ps);
bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.keepAlive", true);
bootstrap.setOption("reuseAddress", true);
bootstrap.bind(new InetSocketAddress(server_port));
ServerBootstrap bootstrap2 = new ServerBootstrap( new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
private PipelineServer ps2 new PipelineServer(listenMessage2);
bootstrap2.setPipelineFactory(ps2);
bootstrap2.setOption("child.tcpNoDelay", true);
bootstrap2.setOption("child.keepAlive", true);
bootstrap2.setOption("reuseAddress", true);
bootstrap2.bind(new InetSocketAddress(server_port2));
listenMessage1& listenMessage2用于端口生成和端口监视之间的通信,处理程序解码和编码使用StringDecoder()& StringEncoder();但如果程序运行很长时间ex:1天,我们的日志发现“很多打开的文件”,我无法连接到服务器。
请你解决。 感谢
答案 0 :(得分:0)
你检查过你的ulimit设置了吗?对于Linux上的服务器,默认情况下它很低。你可以查看“ulimit -n”。将它设置为大于1024的值。