2016-08-11 2 views
0

Ich versuche repairDatabase von MongoDB auf Ubuntu 16.04 zu tun, aber es schlägt mit einem Fehler fehl "errno: 24 Too many open files" ("code": 16818).MongoDB "Open Files Limit" -Fehler während repairDatabase

Ich habe "ulimit -n" bis zu 1024000 ausgelöst, den Server neu gestartet, aber immer noch den gleichen Fehler. Es scheint nicht möglich zu sein, es höher zu heben, und ich habe keine Ideen. Bitte helfen Sie!

+0

Wie viele Sammlungen haben Sie? MongoDB kann diesen Fehler auslösen, wenn Sie die WiredTiger-Speicher-Engine mit vielen Sammlungen verwenden. Versuchen Sie, die primäre oder sekundäre Instanz zu reparieren? – Jaco

+0

Ich verwende MMAP Speicher-Engine und habe nur eine Instanz. Es gibt ungefähr 10 Sammlungen, aber eine von ihnen ist ziemlich groß (Gesamtgröße der DB-Dateien ist etwa 170 GB) –

Antwort

1

Wir haben ähnliches Problem konfrontiert. Stellen Sie zuerst sicher, dass die Anzahl der Dateideskriptoren, die von "mongod" verwendet werden, während des Befehls repairDatabase() verarbeitet wird. Sie können dies mit Hilfe von "lsof -p mongod_pid" überprüfen. Bitte beachten Sie auch, wenn Sie "maximale Anzahl der Prozess" ändern möchten, müssen Sie "/etc/security/limits.conf" -Datei bearbeiten, indem Sie Eintrag hinzufügen für Mongod Prozess.

Edit: dort auch bereits feature request Datei pro Datenbank zu öffnen, wie zur Zeit „wiredtiger“ öffnet eine Datei pro Sammlung und einen für Index. Auch sollte man sich die horizontale Skalierung ernsthaft anschauen, indem man sich schert, wenn die Kosten kein ernstes Problem sind.

+0

Vielen Dank für Ihre Antwort! Um ehrlich zu sein, das Problem ist ziemlich alt, und ich erinnere mich nicht einmal daran, wie ich es damals überwunden habe ... Also kann ich deine Lösung jetzt nicht wirklich überprüfen, sorry. –

+0

Ich dachte, es wird für jemanden hilfreich sein, der in Zukunft ähnliche Probleme haben könnte. – user3526905