2015-09-21 92 views
4

我遇到了錯誤:PHP打開流失敗:打開的文件太多。PHP未能打開流:打開的文件太多

我在這裏看到了各種答案在stackoverflow,但我無法解決這個問題。我主要嘗試增加最大限制。打開文件:

我已經編輯,我指定該/etc/security/limits.conf文件:

*  soft nofile  10000 
*  hard nofile  30000 

節約和註銷/重啓盒子後,命令:

ulimit -n 

仍然打印出1024.我不知道爲什麼這沒有效果,我認爲這是我得到PHP錯誤的原因。如果需要,我可以粘貼整個文件或任何其他配置文件。我使用PHP 5.6,nginx 1.8.0和php-fpm。

這對我現在的工作是手動nginx的重啓解決辦法:

service nginx restart 

這事以後再工作。主要發生在運行單元測試,測試或向Web服務器發出大量請求時發生的問題。

+0

請參閱http://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user –

回答

0

的解決方案是再做無業遊民停止,然後無業遊民SSH。然後它打印出10000.看起來像簡單的註銷和用戶登錄是不夠的,出於某種原因。

2

聽起來像一個長期運行的過程是打開文件,而不是正確關閉它們。你有什麼想法哪個過程可能會這樣做?你在做什麼,你會打開大量的文件?聽起來這可能是你的單元測試庫的一個問題。我對behat不熟悉;您是否專門針對您使用的庫/軟件搜索了此錯誤?當你談論「向Web服務器發出大量請求」時,那些所有'併發'請求都可能導致很多文件句柄被打開嗎?

最終,我認爲你需要解決的問題 - 如果它確實是一個問題 - 打開更多的文件比你期望的方式。

2

您應該增加運行php進程的用戶的每個用戶文件限制。檢查你的php進程在運行哪個用戶,並增加它們的限制。你可以這樣做。 $ cat /etc/security/limits.conf * hard nofile 500000 * soft nofile 500000 root hard nofile 500000 root soft nofile 500000 www-data hard nofile 500000 www-data soft nofile 500000

參考: https://rtcamp.com/tutorials/linux/increase-open-files-limit/

+0

好的我明白上面提到的觀點評論。我用鏈接編輯了我的答案作爲參考。 –