我使用的是Mac OS X集市V2.0.1 10.6.2如何解决Bazaar中的“太多打开的文件”错误?
当我执行移动大量的文件/目录(10000)提交后,我得到了以下错误消息:
bzr: ERROR: [Errno 24] open: Too many open files: '.'
我的第一个解决方法是将提交分成几个子集。然而,这并不理想,我担心可能会有一个变化(不能被分解为子集)会给我带来同样的错误。
[更新]
做一些研究,这是我发现后:
它看起来像:
Errno 24 "open: Too many open files"
是一个Python错误。
根据this blog post,打开的文件数量的限制可以从Python脚本中更改为resource.setrlimit
。然而,我真的想找一种方法来改变默认值,所以Bazaar会自动运行一个更高的值(顺便说一句,它看起来像我的默认设置是2560)。
根据setrlimit系统调用的apple文档,有一个sh内置命令,称为ulimit可用于更改设置。任何从shell启动的进程都会继承这个值。
我目前的解决方法是将ulimit -n 10240
添加到〜/ .profile。这样,当我从shell运行bzr commit
时,它将能够打开10240个文件。我选择了10240个文件,因为这是Mac OS X中用户进程所允许的最大数量。
看起来Bazaar似乎并不需要一次打开许多文件。我担心,如果我移动更多的文件,这可能会再次咬我。这是Bazaar中的错误吗?还有什么我可以做的吗?
当你说大量的文件/目录,约。多少?数百?成千上万的? – 2010-01-18 21:32:26
关闭一些文件? (只是在开玩笑;) – Cyclone 2010-01-18 21:34:54
@Frank,我相信有超过10,000个文件已被移动。但是为什么Bazaar在执行提交时需要所有的开放?这些文件已经在文件系统中移动了。 – Trent 2010-01-18 21:47:27