我有一个 Java Web 应用程序设置为在 /etc/init.d/application 中的脚本中启动,该应用程序因“打开太多文件”错误而失败,但如果我以我的用户身份执行相同的脚本,则不会出现任何问题。
我已经增加了 /etc/security/limits.conf 中的限制,但我不明白为什么这种情况只在机器启动时发生(我尝试过很多次)
这可能与执行脚本的运行级别有关吗?
操作系统是Redhat 5.4
答案1
该/etc/security/limits.conf
文件仅影响正常登录。如果您想对启动脚本(该脚本从不执行任何正常登录)设置限制,则必须在脚本本身中执行此操作。
答案2
要修复此问题,您需要执行启动脚本中的命令。
假设它是一个 bash 脚本,然后执行您的应用程序,则将ulimit -n 8192
其添加为命令。如果它是一个 java 程序,则Runtime.getRuntime().exec("ulimit -n 8192")
在启动时使用。