“未能打开stream:打开的文件过多”和垃圾收集

虽然编写一些unit testing,我打了太多打开的文件(Debian VM)的上限 – “无法打开stream:打开的文件太多”

除了重启之外,有没有办法清除这个块? (即,这些打开但未被访问的文件是否会随着时间的推移被清理?)

Fyi – 我想知道,因为我想要为unit testing设置一个持续集成服务器,如果重启是解决此问题的唯一方法,那么我需要find一种不同的方法来处理某些unit testing。

除非你closures它们或者拥有它们的过程死亡。

您正在使用的用户运行testing的可能性受限于可以打开多less个文件。

您是否尝试增加运行testing的用户的最大打开文件?

要查看用户有多less打开的文件(软和硬):

# ulimit -Hn # ulimit -Sn 

有时你需要增加系统的全局最大打开文件也是正常的。 所以试试看,看看是否有帮助。

 # sysctl -w fs.file-max=100000 

如果你想永久改变最大打开的文件,你需要编辑/etc/sysctl.conf文件,并添加/更改下面的行

 fs.file-max = 100000