我使用的是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