【问题标题】:"Too many open files" on Tomcat KeystoreTomcat Keystore 上的“打开的文件太多”
【发布时间】:2012-07-07 07:43:52
【问题描述】:

我最近开始在我们的 Tomcat 服务器上遇到错误:“打开的文件太多”,并且该错误继续引用用于服务器 SSL 连接器的密钥库文件。有谁知道这可能来自哪里?我们的服务器接收到相当数量的连接,但如果我将可接受的最大连接数推到 150 以上,服务器甚至不会启动(无论出于何种原因)。有什么方法可以让 Tomcat 将密钥库缓存在内存中,这样连接就不必重复从文件中读取?

【问题讨论】:

  • 服务器运行在 Ubuntu 9.04 服务器上,它是运行在 JDK 6 Update 5 虚拟机上的 Tomcat 5.5。
  • 您应该尝试运行“lsof -utomcatprocessname”以列出运行 tomcat 的进程保持打开的所有文件。您可能会对保持打开状态的内容感到惊讶。

标签: tomcat ssl


【解决方案1】:

我将假设您在 Linux 上运行,因为这就是我的答案。

第一步是检查打开文件的ulimit,并尝试在shell中将其设置得更高:

ulimit -n

这可能会打印 1024,这是 Linux 的“正常”用户限制。尝试设置更大的数字:

ulimit -n 2048

如果成功了,那就太好了。将该命令放入您的登录脚本中,您应该一切顺利。如果没有,那么您需要增加每个用户的限制。根据this document,你要编辑的文件是/etc/security/limits.conf

顺便说一句,您(可能)没有看到这个,因为 Tomcat 一直在读取同一个文件。 JVM 通常会打开(和内存映射)您的应用程序使用的所有 JAR 文件,并且还可能保留配置文件的打开文件句柄。打开密钥库文件时恰好达到了限制。

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多