Unix
“無法打開流:打開的文件太多”和垃圾收集
在編寫一些單元測試時,我達到了打開文件太多(Debian VM)的上限-“無法打開流:打開的文件太多”
除了重啟,還有什麼辦法可以清除這個塊嗎?(即這些打開但未訪問的文件會隨著時間的推移而被清理嗎?)
僅供參考 - 我想知道,因為我想為單元測試設置一個持續集成伺服器,如果重啟是解決這個問題的唯一方法,那麼我需要找到一種不同的方法來處理某些單元測試。
除非您關閉它們或擁有它們的程序死亡。
您用來執行測試的使用者可能會受到 ulimits 的限制,即他們可以打開多少個文件。
您是否嘗試增加執行測試的使用者的最大打開文件數?
要查看使用者有多少打開的文件(軟文件和硬文件):
# ulimit -Hn # ulimit -Sn
有時您需要增加系統的全域最大打開文件數也是正常的。所以嘗試一下,看看它是否有幫助。
# sysctl -w fs.file-max=100000
如果您想永久更改最大打開文件數,您需要編輯
/etc/sysctl.conf
文件並添加/更改以下行fs.file-max = 100000