我在nginx上收到了看似常见的“文件描述符过多”错误。经过大量搜索之后,解决方案显然是增加可供nginx使用的文件描述符的数量。但是没有足够的信息让我感到以有意义和安全的方式进行此操作。以下是大多数论坛/电子邮件主题涵盖的要点:
- 操作系统有其自己的总文件描述符限制(在我的系统上,
cat /proc/sys/fs/file-max
输出“ 100678”) - 每个用户也可以有自己的限制(但在我的系统上,
ulimit
以任何用户输出“无限”的方式运行,请参阅底部的更新,以获取更多详细信息) - 一些人按照此人说的话说了一些话:“指令worker_rlimit_nofile没有指定“多少”,而是操作系统限制。指令worker_rlimit_nofile仅允许以一种肮脏的方式扩大此限制(如果还不够的话)。因此,我想这暗示着为nginx OS用户设置限制而不是在配置中“更好”吗?
我可以抛出一个大于每个工人连接数的worker_rlimit_nofile值,并将其称为一天,但是我真的不知道这是怎么回事。
- 为什么每个工人的限制小于操作系统的限制?
- 我如何找出我现在的极限?
更新:对根和一个普通用户,输出的ulimit“无限制”,但ulimit -Hn
和ulimit -Sn
两个输出1024