nginx 和 IM erlang 服务器的最大文件描述符

nginx 和 IM erlang 服务器的最大文件描述符

我使用 nginx 提供静态文件服务并作为 Erlang IM 服务器的代理。每个用户使用两个长轮询 http 连接。操作系统是 ubuntu 服务器。

在高峰时段我看到:

> sudo more /proc/sys/fs/file-nr
1024 0 38001

在正常时间,文件描述符的数量低于 1024,但从未超过 1024。当我达到 1024 的限制时,用户会报告连接丢失。

为什么我被限制在 1024 个文件描述符,尽管 root 用户 (erlang)、www-data 用户 (nginx) 和打开的 TCP 连接都低于 1024 个?是否存在全局 1024 个限制?

我是否需要将 worker_rlimit_nofile 与 nginx 一起使用,或者是否足以为所有用户增加 limits.conf 中的 nofile?

谢谢

更多可能相关的信息:

> sudo nano /etc/security/limits.conf
...
root           hard    nofile          30000
root           soft    nofile          30000

> sudo sysctl fs.file-max
fs.file-max = 38001

> ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 4160
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4160
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

答案1

除 root 之外的其他用户最有可能达到您的文件描述符限制。

尝试切换/etc/security/limits.conf

...
*           hard    nofile          30000
*           soft    nofile          30000

这样每个用户的上限就是 30000。

相关内容