如何在Bazaar中解决“Too many open files”错误?

时间:2010-01-18 21:29:44

标签: python bazaar

我在Max OS X 10.6.2上使用Bazaar v2.0.1

当我移动大量文件/目录(超过10,000)后执行提交时,我收到以下错误消息:

  

bzr:错误:[Errno 24]开放:太多了   打开文件:'。'

我的第一个解决方法是将提交分解为几个子集。然而,这并不理想,我担心可能会有一个变化(不能分解成子集)会给我同样的错误。

[更新]

经过一些研究后,我发现了这个:

看起来像:

  

Errno 24“open:打开文件过多”

是Python错误。

根据this blog post,可以使用resource.setrlimit在Python脚本中更改打开的文件数限制。但是,我真的在寻找一种更改默认值的方法,因此Bazaar会自动以更高的值运行(BTW,看起来我的默认设置是2560)。

根据setrlimit系统调用的apple文档,有一个名为 ulimit 的内置命令,可用于更改设置。然后,从shell启动的任何进程都将继承此值。

我目前的解决方法是将ulimit -n 10240添加到〜/ .profile 。这样,当我从shell运行bzr commit时,它将能够打开10240文件。我选择了10240个文件,因为这是Mac OS X中用户进程允许的最大值。

似乎Bazaar不需要同时打开许多文件。我担心,如果我移动更多的文件,这可能会再次咬我。这是Bazaar的一个错误吗?还有什么我可以做的吗?

2 个答案:

答案 0 :(得分:3)

您可以使用lsof查看所有打开的文件。您可以尝试使用集市流程的pid或监控打开文件的数量。

请注意,您可能需要也可能不需要root用户来查看与您的情况相关的所有文件/进程。

答案 1 :(得分:2)

在运行bazaar之前尝试ulimit -n 1024(或更多),如果你的shell支持它(它是内置的bash)。

金克斯!编辑:您可以将其放在~/.profile(如果有)或~/.bash_profile