Nun, da sich die Frage von selbst erklärt, möchte ich sie noch ein wenig präzisieren.
Ich verwende MongoDB hauptsächlich für reine Lesezwecke im Backend. Meine Crons sind für die Schreibvorgänge zuständig, und wenn sie ausgelöst werden, machen sie nicht wirklich viel Druck. Einige Aktualisierungen, einige neue Dokumente usw.
Die Sache ist, dass die Anfragen normalerweise nicht einmal die Anwendungsebene erreichen, da die gesamte Seite von Nginx in MemCached zwischengespeichert wird. Die Anwendung fragt also nicht für eine weitere Stunde pro Seite die Datenbank ab.
Aber soweit ich in meiner Prozessliste sehen kann, gibt es 21 MongoDB-Arbeitsprozesse, die keine CPU, aber eine ziemlich große Menge an Speicher aufgrund der vorherigen Abfragen verwenden.
Ich habe die Konfigurationseinstellungen und habe herumgegoogelt, konnte aber keine Antwort finden. Gibt es also eine Möglichkeit, diese Prozesse zu begrenzen oder zumindest MongoDB anzuweisen, seine Speichernutzung nach einer Weile zu reduzieren/zu leeren?
0 Stimmen
Wie viele Verbindungen zur Datenbank sehen Sie, wenn Sie 21 Arbeiter haben? Der Speicherbedarf pro Verbindung ist ziemlich groß, daher sollte es hilfreich sein, wenn Sie sicherstellen, dass die maximale Anzahl der Verbindungen immer 1 beträgt. Dies ist eine Einstellung auf der Treiberseite.
0 Stimmen
Ich musste mongod neu starten (wegen eines seltsamen Zugriffsproblems auf die Protokolldatei), so dass im Moment 14 Worker und nur 5 Verbindungen ohne laufende Abfrage vorhanden sind. Es sagt auch 704mb zugeordnete Daten und 1,5gb virtuelle Größe.
0 Stimmen
Haben Sie nach all den Jahren eine Möglichkeit gefunden, die Zahl der Arbeitnehmer zu kontrollieren?
0 Stimmen
@lepe: Ich habe diese Frage auf einer Konferenz direkt an die MongoDB-Leute gestellt und die Antwort erhalten, dass man das interne Verhalten leider nicht kontrollieren kann. Das ist allerdings schon viele Jahre her, vielleicht haben sich die Dinge seither geändert.
0 Stimmen
@kirpit: Danke für das Update. Ich vermute, die Antwort kann irgendwo in ihrem Code versteckt sein. Wenn ich eines Tages Zeit habe, werde ich einen Blick darauf werfen.