Unix

“無法打開流:打開的文件太多”和垃圾收集

  • September 25, 2012

在編寫一些單元測試時,我達到了打開文件太多(Debian VM)的上限-“無法打開流:打開的文件太多”

除了重啟,還有什麼辦法可以清除這個塊嗎?(即這些打開但未訪問的文件會隨著時間的推移而被清理嗎?)

僅供參考 - 我想知道,因為我想為單元測試設置一個持續集成伺服器,如果重啟是解決這個問題的唯一方法,那麼我需要找到一種不同的方法來處理某些單元測試。

除非您關閉它們或擁有它們的程序死亡。

您用來執行測試的使用者可能會受到 ulimits 的限制,即他們可以打開多少個文件。

您是否嘗試增加執行測試的使用者的最大打開文件數?

要查看使用者有多少打開的文件(軟文件和硬文件):

# ulimit -Hn
# ulimit -Sn

有時您需要增加系統的全域最大打開文件數也是正常的。所以嘗試一下,看看它是否有幫助。

# sysctl -w fs.file-max=100000

如果您想永久更改最大打開文件數,您需要編輯/etc/sysctl.conf文件並添加/更改以下行

fs.file-max = 100000

引用自:https://serverfault.com/questions/431634