我已经设置了
kern.maxfiles=65536
kern.maxfilesperproc=65536
在此之后,我将以下命令放在我的.zshrc文件中
ulimit -n 30000
但是,如果我尝试从eclipse运行基于netty的应用程序,只打开10k套接字,然后发生java IO异常“太多打开文件”。 Folowing是堆栈跟踪。
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
答案 0 :(得分:0)
增加文件描述符值以实现。您将值设置为“65536”,但通过添加shell
仅调用30000请更改值,然后通过su - in current session重新加载bash或打开新的终端/会话,然后重新启动应用程序。它必须工作
您可以借助以下链接设置ulimit。
https://vasnlinux.wordpress.com/2015/05/01/linux-server-hardening/