我最近开始在我们的Tomcat服务器上收到错误:“Too Many Open Files”,并且错误继续引用用于服务器SSL连接器的密钥库文件。有没有人知道这可能来自哪里?我们的服务器接收了大量的连接,但是如果我将最大可接受的连接推送到150,那么服务器甚至不会启动(无论出于何种原因)。有没有办法让Tomcat在内存中缓存密钥库,以便连接不必重复读取文件?
答案 0 :(得分:1)
我将假设你在Linux上运行,因为那是我得到答案的地方。
第一步是检查打开文件的ulimit,并尝试在shell中将其设置得更高:
ulimit -n
这可能会打印1024,这是Linux的“正常”用户限制。尝试设置更高的数字:
ulimit -n 2048
如果成功,那很好。将该命令放在您的登录脚本中,您应该很高兴。如果没有,那么您需要增加每用户限制。根据{{3}},您要修改的文件是/etc/security/limits.conf
顺便说一下,你(可能)没有看到这个,因为Tomcat一直在阅读同一个文件。 JVM通常打开(和内存映射)应用程序使用的所有JAR文件,并且可以保留配置文件的打开文件句柄。它恰好在打开密钥库文件时达到了极限。