Ubuntu 12.04
我已更改设置:
/etc/security/limits.conf
* soft nofile 65000
* hard nofile 65000
但是 cat /proc/{PID}/limits:
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
我找到了问题所在。Upstart 有一个 bug,导致它忽略了/etc/security/limits.conf。这些链接描述了该错误和解决方法。
- https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669
- http://bryanmarty.com/blog/2012/02/10/setting-nofile-limit-upstart/
- https://stackoverflow.com/questions/19995855/increase-max-open-files-for-ubuntu-upstart-initctl
现在的问题是,如何设置全局 nofile 限制,因为我不想在我需要的每个 upstart 脚本中设置 nofile 限制。
谢谢。
答案1
Upstart 的行为与规定一致,不是一个错误 - 服务受其自身配置的约束,而不是安全限制(它绑定了没有其他定义的用户进程 - 因此它是安全限制)。
已经做了一些工作来实施Upstart 的“全局配置”默认文件但这似乎被忽视了(可能是由于 Upstart 开发人员没有承诺)。
我认为,最好的选择是创建一个只包含limit nofile
指令的覆盖文件,然后将其复制以覆盖所有现有的 upstart 服务。如下所示:
for file in /etc/init/*.conf
do echo "limit nofile 65000 65000" > "${file%%.conf}.override"
done