0

私は設定しました

kern.maxfiles=65536
kern.maxfilesperproc=65536

この後、次のコマンドを .zshrc ファイルに入れます

ulimit -n 30000

ただし、eclipse から netty ベースのアプリケーションを実行しようとすると、10k ソケットしか開かれず、Java IO 例外「開いているファイルが多すぎます」が発生します。以下はスタックトレースです。

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:68)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:510)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:467)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:381)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:834)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
    at java.lang.Thread.run(Thread.java:745) 

次のコマンドを使用して、サーバーで使用されている開いているファイル/ソケットの数を確認します。例外が発生すると、常に 10k をわずかに超える値が表示されます。

lsof -p <pid> | wc -l 
4

1 に答える 1