パイプラインの末尾に達し、今はサーバーコードが例外を生成しており、何が起こっているのか理解できません。ネッティー:WARNING:exceptionCaught()イベントが発生し、それが増加している、私はそれがクライアントの罰金が、最後の数日間の負荷を働いていた複数のクライアントに対処する私のクライアントにサービスを書いた
私のコードは次のとおりです。
public void run() throws Exception {
//System.setProperty("org.jboss.netty.epollBugWorkaround", "true");
EventLoopGroup bossPool = new NioEventLoopGroup(BOSS_THREADS);
EventLoopGroup workerPool = new NioEventLoopGroup(MAX_WORKER_THREADS);
try {
ServerBootstrap boot = new ServerBootstrap();
boot.group(bossPool, workerPool);
boot.channel(NioServerSocketChannel.class);
boot.childHandler(new Pipeline());
boot.option(ChannelOption.TCP_NODELAY, true);
boot.option(ChannelOption.SO_KEEPALIVE, true);
boot.option(ChannelOption.SO_REUSEADDR, true);
boot.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 6000);
boot.option(ChannelOption.SO_TIMEOUT, 6);
boot.option(ChannelOption.SO_BACKLOG, 2048);
//System.out.println("Server started listening at port : " + port);
boot.bind(port).sync().channel().closeFuture().sync();
} catch (InterruptedException e) {
} finally {
workerPool.shutdownGracefully();
bossPool.shutdownGracefully();
}
}
パイプラインのコードは次のとおりです。
public class Pipeline extends ChannelInitializer<Channel> {
@Override
protected void initChannel(Channel ch) throws Exception {
// ch.pipeline().addLast("joiner", new JoinRequest());
ch.pipeline().addLast("decoder", new ByteArrayDecoder());
ch.pipeline().addLast("encoder", new StringEncoder());
ch.pipeline().addLast("myHelper", new RequestHandler());
}
}
、ここでは、私が日常的に取得しています詳細なエラーログです:
1006465:54:21:10-16-03-2017Mar 16, 2017 10:21:54 AM io.netty.channel.DefaultChannelPipeline$TailContext exceptionCaught
WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.io.IOException: Too many open files
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
at io.netty.channel.socket.nio.NioServerSocketChannel.doReadMessages(NioServerSocketChannel.java:135)
at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:69)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:514)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:471)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:385)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:351)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
at io.netty.util.internal.chmv8.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1412)
at io.netty.util.internal.chmv8.ForkJoinTask.doExec(ForkJoinTask.java:280)
at io.netty.util.internal.chmv8.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:877)
at io.netty.util.internal.chmv8.ForkJoinPool.scan(ForkJoinPool.java:1706)
at io.netty.util.internal.chmv8.ForkJoinPool.runWorker(ForkJoinPool.java:1661)
at io.netty.util.internal.chmv8.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:126)
com.idea.builders.RequestHandler oprationSelector
SEVERE: null
java.io.FileNotFoundException: config.dat (Too many open files)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.idea.builders.RequestHandler.oprationSelector(RequestHandler.java:175)
at com.idea.builders.RequestHandler.messageReceived(RequestHandler.java:97)
at com.idea.builders.RequestHandler.messageReceived(RequestHandler.java:35)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:84)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:153)
at io.netty.channel.PausableChannelEventExecutor.invokeChannelRead(PausableChannelEventExecutor.java:86)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:389)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:84)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:153)
at io.netty.channel.PausableChannelEventExecutor.invokeChannelRead(PausableChannelEventExecutor.java:86)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:389)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:956)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:127)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:514)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:471)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:385)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:351)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
at io.netty.util.internal.chmv8.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1412)
at io.netty.util.internal.chmv8.ForkJoinTask.doExec(ForkJoinTask.java:280)
at io.netty.util.internal.chmv8.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:877)
at io.netty.util.internal.chmv8.ForkJoinPool.scan(ForkJoinPool.java:1706)
at io.netty.util.internal.chmv8.ForkJoinPool.runWorker(ForkJoinPool.java:1661)
at io.netty.util.internal.chmv8.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:126)
Mar 16, 2017 10:21:54 AM com.idea.builders.RequestHandler oprationSelector
SEVERE: null
java.io.FileNotFoundException: config.dat (Too many open files)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.idea.builders.RequestHandler.oprationSelector(RequestHandler.java:175)
at com.idea.builders.RequestHandler.messageReceived(RequestHandler.java:97)
at com.idea.builders.RequestHandler.messageReceived(RequestHandler.java:35)
は、私が何をすべき毎日サーバーを再起動する必要がありますか?
あなたはあまりにも多くのファイルがシステム上のオープンハンドルを持っているので、このエラーがある、あなたが開いたファイルを閉じていることを確認し、あなたは、クライアントが接続を切断後、スレッド子を殺すために確認していますか? – zack6849
はい、各スレッドが強制終了され、ファイルも閉じます。 –
あなたはどのOSですか? – Nicholas