sql >> Databáze >  >> NoSQL >> MongoDB

Příliš mnoho otevřených souborů při zajištění indexového mongo

Poznámka: Toto řešení funguje/nemusí fungovat s nejnovějšími Mac OS (komentáře uvádějí>10.13?). Zřejmě byly provedeny změny z bezpečnostních důvodů.

Koncepčně platí řešení - následuje několik zdrojů k diskuzi:

  • 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

--

Měl jsem stejný problém (provádění jiné operace, ale stále se objevila chyba "Příliš mnoho otevřených souborů") a jak říká les, zdá se, že je to až na limitu 'maxfiles' na počítači, na kterém běží mongod.

Na počítačích Mac je lepší zkontrolovat limity pomocí:

sudo launchctl limit

To vám dává:

<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  

Abych tento problém obešel, bylo dočasně nastavit vyšší limit (můj byl původně něco jako měkký:256, tvrdý:1000 nebo něco podobného):

sudo launchctl limit maxfiles 1024 2048

Poté znovu spusťte operaci dotazu/indexování a zjistěte, zda se přeruší. Pokud ne a chcete-li zachovat vyšší limity (budou resetovány, když se odhlásíte z relace shellu, na kterou jste je nastavili), vytvořte soubor '/etc/launchd.conf' s následujícím řádkem:

limit maxfiles 1024 2048

(nebo přidejte tento řádek do svého stávajícího souboru launchd.conf, pokud jej již máte).

Toto nastaví maxfile přes launchctl na každém shellu při přihlášení.



  1. Jak zjistím datum vytvoření kolekce MongoDB pomocí ovladače MongoDB C#?

  2. Přihlaste se k odběru více kanálů se stejným vláknem Jedis

  3. Jaký je správný způsob, jak zvládnout připojení Redis v Tornado? (Asynchronní – Pub/Sub)

  4. DeprecationWarning:collection.findAndModify je zastaralá. Místo toho použít findOneAndUpdate, findOneAndReplace nebo findOneAndDelete?