2013-06-04 165 views
2

我怎樣才能提高nginx的文件描述符的限制?Nginx的文件描述符限制

有幾種方法,以增加文件描述符:

  1. 編輯/etc/security/limits.conf文件和nginx的用戶設置NOFILE軟硬限制。

  2. 設置$ ULIMIT在/ etc /默認/ nginx的。設置的ulimit $ ULIMIT https://gist.github.com/aganov/1121022#file-nginx-L43

  3. 集worker_rlimit_nofile在nginx.conf http://wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile

nginx的的init.d腳本設置是否limits.conf中限制使用在系統啓動的init.d腳本啓動時nginx的影響?

我一定要使用的ulimit $ ULIMIT在init腳本或可worker_rlimit_nofile來代替?

當在init腳本中使用的ulimit $ ULIMIT,我還需要使用worker_rlimit_nofile設置每個工人的限制?

感謝

+0

是** **警告說,這可能有副作用。更多信息[在這個很棒的回答](http://serverfault.com/a/209004/120233)在ServerFault上。 – kaiser

回答

2

正確的方式來增加限制是通過設置worker_rlimit_nofile。

+0

你是如何得出這個結論的? – Brian

+0

注意CentOS/Fedora用戶,如果您啓用了SELinux,您需要運行'setsebool -P httpd_setrlimit 1',以便nginx有權設置其rlimit。 – Jarrett

2

討論的每個項目:

1)在/etc/security/limits.conf僅由pam_limits處理。從init.d開始的進程通常不使用pam_limits。例如,需要在init級別設置ulimit,例如在服務腳本中。

2)默認的nginx初始化腳本沒有此設置(至少官方的Red Hat/CentOS組件)。但改變這個初始化腳本是一種有效的方式,儘管不推薦。

3)worker_rlimit_nofile只能在進程級別工作,它僅限於系統的硬限制(ulimit -Hn)。它用於動態更改nginx進程可以處理的最大文件描述符,通常使用系統的軟限制進行定義。