7

我正在运行 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
4

1 回答 1

4

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

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

此外,请检查您使用的是 unix 套接字还是 tcp 套接字,请尝试使用 tcp 选项,除非您在 BSD 上,并且认为 unix 套接字工作得更快。

于 2012-09-19T21:16:24.927 回答