【问题标题】:Nginx File descriptor limitNginx 文件描述符限制
【发布时间】:2013-05-30 22:59:00
【问题描述】:

如何增加 nginx 中的文件描述符限制?

增加文件描述符有几种方法:

  1. 编辑 /etc/security/limits.conf 并为 nginx 用户设置 nofile 软硬限制。

  2. /etc/default/nginx 中设置$ULIMIT。 nginx init.d 脚本设置 ulimit $ULIMIT https://gist.github.com/aganov/1121022#file-nginx-L43

  3. nginx.confhttp://wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile中设置worker_rlimit_nofile

在启动时使用init.d 脚本在limits.conf 中设置限制会影响nginx 吗?

我必须在初始化脚本中使用 ulimit $ULIMIT 还是可以使用 worker_rlimit_nofile 代替?

在 init 脚本中使用 ulimit $ULIMIT 时,是否还需要使用 worker_rlimit_nofile 为每个 worker 设置限制?

谢谢

【问题讨论】:

标签: nginx file-descriptor


【解决方案1】:

增加限制的正确方法是设置worker_rlimit_nofile。

【讨论】:

  • 你是怎么得出这个结论的?
  • CentOS / Fedora 用户请注意,如果您启用了 SELinux,则需要运行 setsebool -P httpd_setrlimit 1 以便 nginx 有权设置其 rlimit。
【解决方案2】:

讨论每个项目:

1) /etc/security/limits.conf 仅由 pam_limits 处理。从 init.d 开始的进程通常不使用 pam_limits。需要在初始化级别设置 ulimit,例如在服务脚本中。

2) 默认的 nginx 初始化脚本没有这个设置(至少对于官方 Red Hat/CentOS 软件包)。但是改变这个初始化脚本是一个有效的方法,虽然不推荐。

3) worker_rlimit_nofile 仅在进程级别起作用,它受限于系统的硬限制 (ulimit -Hn)。它用于动态更改 nginx 进程可以处理的最大文件描述符,通常使用系统的软限制来定义。

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多