Ubuntu 主管打开文件限制赢得';使用Chef时不要改变

Ubuntu 主管打开文件限制赢得';使用Chef时不要改变,ubuntu,chef-infra,supervisord,ulimit,Ubuntu,Chef Infra,Supervisord,Ulimit,我正在修改机器上的/etc/security/limits.conf,然后在厨师食谱中安装Supervisor。配方运行完成后,如果我运行cat/proc//limits我会看到: Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds M

我正在修改机器上的/etc/security/limits.conf,然后在厨师食谱中安装Supervisor。配方运行完成后,如果我运行
cat/proc//limits
我会看到:

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max open files            1024                 4096                 files
如果我登录到计算机并运行
service supervisor restart
,则会正确设置最大打开文件数。但是,如果我在配方中运行此命令(在安装supervisor之后,在配方的最后,任何事情),限制都不会改变。直到我登录并手动运行该命令,限制才会更改


如何获得主管使用厨师配方更改的打开文件限制?操作系统是Ubuntu 12.04。

我没有在我的电脑上测试,因为我现在无法停止supervisord。但是如果您重新排序/etc/rc目录

# find /etc/rc* -iname "*super*"
/etc/rc0.d/K01supervisor
/etc/rc1.d/K01supervisor
/etc/rc2.d/S16supervisor
/etc/rc3.d/S16supervisor
/etc/rc4.d/S16supervisor
/etc/rc5.d/S16supervisor
/etc/rc6.d/K01supervisor

对于任何疲惫的谷歌用户来说,我都有同样的问题:你可能正在搜索中的
minfds
设置。此设置似乎对supervisord进程和子进程都有效。我有很多其他的策略,包括在执行实际程序之前启动一个shell脚本来设置限制,但这是唯一有效的方法。

supervisor的实现使得一个进程可以作为非root用户启动,拥有比该用户更多的权限-绕过pam,limits.conf,所以我怀疑这个问题能否解决。查看一下

minfds仅定义了supervisord进程可以访问的最小文件描述符。如果小于指定值,supervisord将不会启动。它不会设置允许为子级打开的文件…因此,在程序集
minfds=100000
的配置文件中,会调用setrlimit来尝试提高supervisord进程的软限制和硬限制,以满足minfds。只有当supervisord作为root运行时,硬限制才可能提高堆栈是惊人的,你是惊人的,评论是惊人的!不要忘记重新启动sudo service supervisor