我们正在Amazon Linux的Apache Tomcat中运行Web服务。最初,Web服务运行正常。发出超过1000个Web请求后,我们收到太多打开文件异常。同样,当我们重新启动tomcat服务器时,将解决此问题。
请在下面找到例外
25-Apr-2016 10:05:52.628 SEVERE [http-nio-8080-Acceptor-0] org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed 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 org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:686) at java.lang.Thread.run(Thread.java:745)
PS:我们不在Web服务中进行任何与文件相关的操作。
看起来,打开文件有一些限制。当您在Linux上运行时,我怀疑您的文件描述符已用完。
签出ulimit命令以查看允许打开的文件数。
ulimit -n
您可以通过编辑来更改打开文件的数量:
/etc/security/limits.conf
并添加如下内容:
* soft nofile 4096 * hard nofile 4096
您可以在此处查看有关limit.conf的更多信息。
默认限制是1024,对于某些Java应用程序来说可能太低。
本文中有关增加最大打开文件数的更多信息:http : //www.cyberciti.biz/faq/linux-increase-the- maximum-number-of-open-files/