我需要增加 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 的限制?
答案1
您需要将该配置添加到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
,但建议使用插入文件。