确定root用户的ulimit

我们相信我们增加了root用户的最大打开文件描述符。 这是通过将此行添加到/etc/security/limits.conf中完成的:

* - nofile 2048 

我们认为我们已经证实root用户的限制增加了,因为我们可以告诉(这里没有描述)我们的应用程序(solr – 它是由root运行的)已经打开了1098个文件。 但是,我们无法确定允许root用户有多less个打开的文件。 我们希望这个命令能够工作,但似乎并不是这样:

 $ sudo -u root -s "ulimit -Sn" 1024 

有任何想法吗? 谢谢!

获取solr正在运行的进程的PID,然后cat /proc/$SOLR_PID/limits – 这将告诉你进程的实际限制。

我build议像solr那样运行一个独立的非特权用户。 当你这样做时,你有多个选项( limits.conf或者在init脚本中添加一个ulimit -n 2048 ,…)。 最后一个不是那么有光泽,但适用于快速设置和重新启动守护进程

RANT:不要告诉我你不能重新启动因为你会失去服务。 如果是这种情况,你应该有一个HA设置:)

在更改/etc/security/limits.conf的打开文件数后,用户必须注销并重新login才能生效。 所以,试试这个:

 $ sudo su - # ulimit -Sn 

我知道这个问题有一个答案,但是这看起来更像是一个工作,而不是一个真正的解决scheme。

根据Ubuntu的这不是一个错误,而是一个文档问题,请参阅: https : //bugs.launchpad.net/ubuntu/+source/pam/+bug/65244

感谢您的报告。 正如你所说,这不是在帕姆的错误,而是一个文档问题。 显式允许用户root限制的事实前一段时间(2000年8月30日)已被解决,但您需要明确指定用户root来应用限制。

所以如果你想改变所有用户的ulimit,包括root用户,你必须指定:

 * - nofile 2048 root - nofile 2048