我最近开始我们的Tomcat服务器上得到一个错误:“打开的文件太多”和错误接着引用用于服务器的SSL连接的密钥存储文件。 有谁知道哪里这可以从未来的任何想法? 我们的服务器收到了相当数量的连接,但如果我推可接受的最大连接过去的150,服务器甚至不会启动(无论何种原因)。 有没有什么办法让Tomcat能够在内存中缓存密钥库,以便连接不必反复从文件中读取?
Answer 1:
我会假设你在Linux上运行,因为这是我有一个答案。
第一步是检查打开的文件的ulimit,并尝试更高的设置它的外壳:
ulimit -n
这可能会打印1024,这是Linux的“正常”的用户限制。 尝试设置一个较大的数字:
ulimit -n 2048
如果成功了,太好了。 把该命令在登录脚本,你应该是好去。 如果没有,那么你需要增加每用户限额。 根据这份文件 ,要编辑的文件是/etc/security/limits.conf
顺便说一句,你(可能)没有看到这一点,因为Tomcat的一直读取相同的文件。 在JVM正常打开(和内存映射)的所有应用程序使用的JAR文件,并且可以保留为配置文件打开的文件句柄为好。 碰巧打开密钥库文件时打了极限。
文章来源: “Too many open files” on Tomcat Keystore