2012-09-17 170 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