NB: このソリューションは、最近のMac OSでは機能しない/機能しない可能性があります(コメントは> 10.13を示していますか?)。どうやら、セキュリティの目的で変更が加えられたようです。
概念的には、解決策が適用されます-以下はいくつかの議論の源です:
- https://wilsonmar.github.io/maximum-limits/
- https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
- https://superuser.com/questions/433746/is-there-a-fix-for-the-too-many-open-files-in-system-error-on-os-x-10-7 -1
-
同じ問題が発生しました(別の操作を実行しましたが、それでも「開いているファイルが多すぎます」エラー)。leseが言うように、mongodを実行しているマシンの「maxfiles」制限まで下がっているようです。
Macでは、次のコマンドで制限を確認することをお勧めします:
sudo launchctl limit
これにより、次のことが可能になります:
<limit name> <soft limit> <hard limit>
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 1024 2048
この問題を回避するために私がしたことは、一時的に制限を高く設定することでした(私のものは元々ソフト:256、ハード:1000、またはそのような奇妙なものでした):
sudo launchctl limit maxfiles 1024 2048
次に、クエリ/インデックス作成操作を再実行し、それが機能しないかどうかを確認します。そうでない場合、および上限を維持するには(設定したシェルセッションからログアウトするとリセットされます)、次の行を使用して「/etc/launchd.conf」ファイルを作成します。
limit maxfiles 1024 2048
(または、既存のlaunchd.confファイルがある場合は、その行を既存のlaunchd.confファイルに追加します)。
これにより、ログイン時にすべてのシェルでlaunchctlを介してmaxfileが設定されます。