在编写一些单元测试时,我遇到了打开文件过多的上限(Debian VM)——“无法打开流:打开的文件过多”
除了重新启动之外,还有其他方法可以清除这个阻止吗?(即这些打开但未访问的文件会随着时间的推移而被清理吗?)
仅供参考 - 我想知道,因为我想设置一个用于单元测试的持续集成服务器,如果重新启动是解决此问题的唯一方法,那么我需要找到一种不同的方法来进行某些单元测试。
答案1
除非你关闭它们或者拥有它们的进程死亡。
您用来运行测试的用户可能受到 ulimits 的限制,无法打开多少个文件。
答案2
您是否尝试增加运行测试的用户的最大打开文件数?
查看用户打开了多少个文件(软文件和硬文件):
# ulimit -Hn
# ulimit -Sn
有时您需要增加系统的全局最大打开文件数,这也很正常。因此请尝试这样做,看看是否有帮助。
# sysctl -w fs.file-max=100000
如果您想永久更改最大打开文件数,您需要编辑/etc/sysctl.conf
文件并添加/更改以下行
fs.file-max = 100000