2012-09-17 105 views
5

我运行nginx作为前端和php-fpm作为后端来访问php文件。我的/var/log/php-fpm/error.log文件中出现“文件太多”错误。我已经努力将软限制增加到65535,似乎无法解决问题。php-fpm太多打开的文件

/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 

回答

3

你可以用lsof的(列表打开的文件)检查,可能需要安装它,因为大多数Linux发行版的不包括此默认。它应该给你一个看看那些打开的文件是哪些以及拥有它的进程(所以你可以grep for php)。做一个lsof | wc -l来计算这些值。真的有那么多开放吗?或者,这个错误更像是某种更深层次的症状。如果你知道它们是什么,也许这将给出一个线索,为什么...

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

另外,请检查你使用的是Unix套接字或TCP之一,尝试的TCP选项,除非你在BSD在Unix套接字被誉为工作得更快。

+1

感谢Gleen,我在Linux操作系统水平的提高打开FD限制和问题就解决了。 http://www.cyberciti.biz/faq/linux-unix-nginx-too-many-open-files/ – Ryan