我正在运行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)
ulimit -n
65535
/etc/php-fpm/www.conf
rlimit_files = 65535
答案 0 :(得分:4)
您可以查看 lsof (列出打开的文件),可能需要安装它,因为大多数Linux发行版默认情况下不包含此项。它应该给你一个关于那些打开文件是什么以及拥有它的进程的视图(所以你可以grep for php)。做一个 lsof | wc -l </ strong>来计算那些。真的那么开放吗?或许错误更像是更深层次的症状。如果你知道它们是什么,也许这会给出原因......
看一下它提到STDERR的事实,它可能与广义上的错误有关(也许是php-fpm的错误配置参数?)
此外,检查您是使用unix套接字还是使用tcp,请尝试使用tcp选项,除非您使用的是BSD,其中unix套接字被认为可以更快地工作。