php-fpm太多打开的文件

Rya*_*yan 6 php fastcgi

我正在运行nginx作为前端和php-fpm作为prcesss 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)
Run Code Online (Sandbox Code Playgroud)

ulimit -n

65535
Run Code Online (Sandbox Code Playgroud)

/etc/php-fpm/www.conf

rlimit_files = 65535
Run Code Online (Sandbox Code Playgroud)

Gle*_*las 4

您可以使用lsof (列出打开的文件)进行检查 ,可能需要安装它,因为大多数 Linux 发行版默认情况下不包含它。它应该让您了解这些打开的文件是哪些以及拥有它的进程(这样您就可以 grep for php)。做一个lsof | wc -l来计算这些。真的有那么多开放吗?或者也许这个错误更像是更深层次问题的症状。如果你知道它们是什么,也许就能找到原因......

看看它提到 STDERR 的事实,它可能与广义上的错误相关(也许是 php-fpm 的错误配置参数?)

另外,检查一下您使用的是 unix 套接字还是 tcp 套接字,尝试使用 tcp 选项,除非您使用的是 BSD,其中 unix 套接字据称工作速度更快。

  • 谢谢 Glenen,我增加了 Linux 操作系统级别的 Open FD 限制并解决了问题。http://www.cyberciti.biz/faq/linux-unix-nginx-too-many-open-files/ (2认同)