Joh*_*hir 13 linux nginx ulimit
我在 nginx 上遇到了看似常见的“文件描述符过多”错误。经过多次搜索,解决方案显然是增加 nginx 可用的文件描述符的数量。但是没有足够的信息让我觉得以有意义和安全的方式做这件事。以下是大多数论坛/电子邮件主题涵盖的要点:
cat /proc/sys/fs/file-max输出“100678”)ulimit在任何用户输出“无限”时运行,请参阅底部更新的更多详细信息)我可以将 worker_rlimit_nofile 值放入大于每个工作器连接数的值,并称其为一天,但我觉得我真的不知道这里发生了什么。
更新:对根和一个普通用户,输出的ulimit“无限制”,但ulimit -Hn和ulimit -Sn两个输出1024
Dan*_*n R 11
worker_rlimit_nofile将工作进程的文件描述符限制设置为与运行 nginx 的用户相反。如果在此用户下运行的其他程序将无法正常处理耗尽的文件描述符,那么您应该将此限制设置为略低于该用户的限制。
首先,什么在使用你的文件描述符?
为什么每个工人的限制会小于操作系统限制?
这是由操作系统控制的,因为 worker 不是机器上运行的唯一进程。要为运行 nginx 的用户更改它,请参见下文。如果您的工作人员用完了所有进程可用的所有文件描述符,那将是非常糟糕的,不要设置您的限制,以便这是可能的。
#/etc/sysctl.conf
#This sets the value you see when running cat /proc/sys/fs/file-max
fs.file-max = 65536"
#/etc/security/limits.conf
#this sets the defaults for all users
* soft nofile 4096
* hard nofile 4096
#This overrides the default for user `usernamehere`
usernamehere soft nofile 10240
usernamehere hard nofile 10240
Run Code Online (Sandbox Code Playgroud)
在这些安全限制更改之后,我相信我仍然需要为使用ulimit.
我如何知道我现在的极限是多少?
ulimit -a 将显示与您运行它的用户相关的所有限制。