/etc/security/limits.conf
* soft nofile 65000
* hard nofile 65000
/etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65000
ulimit -n
//output 6500
所以我认为我的系统配置是正确的。
我的服务由supervisor管理,supervisor可能有限制吗?
检查由supervisor启动的进程:
cat /proc/815/limits
Max open files 1024 4096 files
检查流程手动启动:
cat /proc/900/limits
Max open files 65000 65000 files
原因是使用supervisor管理服务。如果我重启supervisor并重启子进程,在重新启动系统之前“最大打开文件数”为65000,但在系统自动启动supervisor后为1024。
可能是supervisor的启动级别太高,当supervisor启动时系统配置不起作用?
编辑:
系统:Ubuntu 12.04 64位
这不是supervisor的问题,所有在系统重新启动后自动启动的进程都不使用系统配置(最大打开文件数=1024),但重新启动可以解决问题。
更新:
可能的问题是:
- https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669
- http://bryanmarty.com/blog/2012/02/10/setting-nofile-limit-upstart/
- Increase max open files for Ubuntu/Upstart (initctl)
现在的问题是如何设置全局nofile限制,因为我不想在每个upstart脚本中都设置nofile限制。
limit nofile
,请尝试在/etc/sysctl.conf
中设置fs.file-max
。 - jfs