我正在运行 nginx 作为前端和 php-fpm 作为后端来处理 php 文件。我在/var/log/php-fpm/error.log 上收到“太多打开的文件”错误。我已经将硬和软 ulimit 增加到 65535,但似乎无法解决问题。
/var/log/php-fpm/error.log
[17-Sep-2012 14:43:51] ERROR: failed to prepare the stderr pipe: Too many open files (24)
[17-Sep-2012 14:43:52] ERROR: failed to prepare the stderr pipe: Too many open files (24)
ulimit -n
65535
/etc/php-fpm/www.conf
rlimit_files = 65535
最佳答案
您可以使用 lsof(列出打开的文件)进行检查,可能需要安装它,因为大多数 linux 发行版默认不包含它。它应该让您了解那些打开的文件是哪些以及拥有它的进程(因此您可以 grep for php)。做一个 lsof | wc -l 来计算那些。真的有那么多开放吗?或者错误可能更像是更深层次的症状。如果您知道它们是什么,也许这会给出原因的线索......
看它提到 STDERR 的事实,它可能在广义上与错误相关(也许是 php-fpm 的错误配置参数?)
此外,请检查您使用的是 unix 套接字还是 tcp 套接字,尝试使用 tcp 选项,除非您使用的是 BSD,因为 unix 套接字被认为工作速度更快。
关于fastcgi - php-fpm 打开的文件太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461810/