我们相信我们已经增加了 root 用户的最大打开文件描述符。这是通过在 /etc/security/limits.conf 中添加此行来实现的:
* - nofile 2048
我们认为我们已经确认 root 用户的限制已增加,因为我们可以判断(这里未描述)我们的应用程序(solr - 由 root 运行)打开了 1098 个文件。但是,我们无法确定 root 用户被允许打开多少个文件。我们希望此命令能够正常工作,但似乎没有:
$ sudo -u root -s "ulimit -Sn"
1024
有什么想法吗?谢谢!
答案1
获取正在运行的进程的 PID solr
,然后cat /proc/$SOLR_PID/limits
——这将告诉您该进程的实际限制。
我建议solr
以单独的非特权用户身份运行。执行此操作时,您有多个选项(限制配置文件或者在 init 脚本中添加一个ulimit -n 2048
,...)。最后一个不是那么好用,但可以快速设置和重新启动守护进程
RANT:别告诉我你不能重启,因为你会失去服务。如果是这样的话,你应该有一个 HA 设置 :)
答案2
更改打开文件数后/etc/security/limits.conf
,用户必须注销并重新登录才能生效。因此,尝试以下操作:
$ sudo su -
# ulimit -Sn
答案3
我知道这个问题有答案,但这看起来更像是一种解决方法,而不是真正的解决方案。
根据 ubuntu 的说法,这不是一个错误,而是一个文档问题,请参阅:https://bugs.launchpad.net/ubuntu/+source/pam/+bug/65244
感谢您的报告。正如您所说,这不是 pam 中的错误,而是文档问题。允许明确允许 root 用户限制这一事实已在不久前(2000 年 8 月 30 日)得到解决,但您需要明确指定 root 用户才能应用限制。
因此,如果您想更改所有用户(包括 root 用户)的 ulimit,则必须指定:
* - nofile 2048
root - nofile 2048