Ubuntu

增加 Ubuntu 上 Nginx 和 PHP-FPM 的最大允許打開文件數

  • August 28, 2016

我需要在 Ubuntu 16.04 上增加 Nginx 1.10 和 PHP-FPM 7 的最大允許打開文件數。根據一些教程,我在 /etc/security/limits.conf 中更改了每個使用者打開文件的最大數量

*    soft nofile 64000
*    hard nofile 68000

我還在 /etc/sysctl.conf 中更改了整個系統的最大打開文件數

fs.file-max = 200500

重新載入我的虛擬機後,我檢查了我登錄系統的使用者的軟限制和硬限制

igor@ubuntu:~$ ulimit -Sn
64000
igor@ubuntu:~$ ulimit -Hn
68000

如您所見,這些限制適用於使用者。我的問題是我無法更改 Nginx 和 PHP 的限制

igor@ubuntu:~$ sudo ps aux|grep nginx
root      1124  0.0  0.0  45988   980 ?        Ss   01:04   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  1125  0.0  0.2  46164  2372 ?        S    01:04   0:00 nginx: worker process
igor      2754  0.0  0.0   5108   848 pts/6    S+   01:14   0:00 grep --color=auto nginx
igor@ubuntu:~$ cat /proc/1124/limits
Limit                     Soft Limit           Hard Limit           Units     

.....
Max open files            1024                 4096                 files     
.....  

和 php 一樣

igor@ubuntu:~$ sudo ps aux|grep php
root      1097  0.0  2.1 118388 22496 ?        Ss   01:04   0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
www-data  1140  0.0  0.5 118388  5532 ?        S    01:04   0:00 php-fpm: pool www
www-data  1141  0.0  0.5 118388  5532 ?        S    01:04   0:00 php-fpm: pool www
igor      2795  0.0  0.0   5108   852 pts/6    S+   01:20   0:00 grep --color=auto php
igor@ubuntu:~$ cat /proc/1097/limits
Limit                     Soft Limit           Hard Limit           Units     
.....
Max open files            1024                 4096                 files     
.....

如何更改 PHP 和 NGINX 的限制?

您需要將該配置添加到systemd單元文件中。最好的辦法是通過一個插入文件來做到這一點。

mkdir /etc/systemd/system/nginx.service.d
echo "[Service]
LimitNOFILE=10000" > /etc/systemd/system/nginx.service.d/local.conf
systemctl daemon-reload
systemctl restart nginx

然後對php7.0-fpm.service單元文件重複此操作。

您也可以在 中設置預設值/etc/systemd/system.conf,但建議使用插入文件。

引用自:https://serverfault.com/questions/799579