我在 Debian 上运行了很长时间。在某些时候抛出错误:
打开的文件太多。
跑步:
ulimit -a
显示:
打开文件 (-n) 1024
我希望将打开文件的数量增加 2 倍。执行后
ulimit -n 2048
该限制一直有效,直到我的会话结束,这不适用于该任务。
如何永久增加打开文件的数量?
我在 Debian 上运行了很长时间。在某些时候抛出错误:
打开的文件太多。
跑步:
ulimit -a
显示:
打开文件 (-n) 1024
我希望将打开文件的数量增加 2 倍。执行后
ulimit -n 2048
该限制一直有效,直到我的会话结束,这不适用于该任务。
如何永久增加打开文件的数量?
内核中还设置了打开文件的“总最大值”,您可以通过以下方式检查当前设置:
并设置一个新值:
如果要在重新启动之间保留配置,请添加
至
要检查当前最大文件使用量:
如果您的进程是通过脚本启动的,您可以在执行守护程序之前将 ulimit 调用放在脚本中。
如果您希望为您的用户或所有用户增加 ulimit,您可以设置通过
pam_limits
登录时应用的限制。这些设置在/etc/security/limits.conf
. 在您的情况下,您可以执行以下操作:请注意,“硬”表示硬限制 - 不能超过,也不能更改。用户可以更改软限制(例如,没有根权限的人),但不能超出硬限制。
阅读
limits.conf
有关使用pam_limits
.请注意,如果您通过 start-stop-daemon 在 /etc/security/limits.conf 中设置 ulimits 来运行您的进程,则不起作用。例如,如果您想将 tomcat 的打开文件限制提高到 20000,则需要将这些添加到以下行
/etc/default/tomcat
:我在 debian 6.0.4 上遇到了这个问题对于其他进程,给出的答案应该会有所帮助。
正如其他人所说,您可以在 /etc/security/limits.conf 中为每个用户或组应用特定限制。
注意: ulimit -n 显示软限制。
会告诉你硬限制。
这使得 ulimit -a 和 ulimit -n 输出相当混乱,例如,如果您将文件数从 1024 增加到 4096,因为您希望看到硬限制输出,但您仍然看到 1024,这是软限制。
另外,请记住,这些限制是每次登录都会强制执行的,因此请在新的 shell 中重新登录并检查您的更改,不要期望它们会传播到现有登录名。
这取决于您如何开始长期运行的过程。如果它在启动时启动(通过 /etc/rcX.d/* 脚本),那么您必须在启动脚本中调用 ulimit,因为默认限制是由内核设置的,如果不重新编译它就无法调整。
/etc/security/limits.conf
如果您使用cron
它来启动它,例如使用这样的条目,则使用可能会起作用:这应该可行,因为 /etc/pam.d/cron 启用了 pam_limits.so。
您可以将其添加到 /etc/security/limits.conf
保存然后重启。
一个非常好的命令是
ulimit -n
,但存在连接过多和打开文件过多的问题: