Wie setze ich ulimits für mongod?

8

Wie setze ich unter mongodCentOS ulimits für den Prozess / Benutzer?

Ich habe die offizielle Dokumentation gelesen, aber sie enthält keine betriebssystemspezifischen Anweisungen.

  • Ich muss einstellen ulimit -u 64000und dies muss nach dem Neustart bestehen bleiben.

  • Ich verwende CentOS 5.5, werde aber bald auf 6.5 aktualisieren.

  • Ich würde es vorziehen, keine vom Paketmanager installierten Skripte zu ändern

Tim
quelle

Antworten:

11

Ändern Sie /etc/security/limits.confmit, was Sie brauchen. Beispiel:

user soft nproc 64000

In dieser Zeile wird die Anzahl der Prozessoren ( -u) für "Benutzer" auf 64000 festgelegt. Weiche / harte Grenzen können gleich sein (weich erlaubt Spitzen, während hart das Laichen verhindert).

Nathan C.
quelle
Danke, aber nachdem Sie dies getan und mongod neu gestartet haben, cat /proc/{pid}/limitszeigt sich keine Änderung. Muss etwas zusätzliches getan werden, um sicherzustellen, dass das Conf gelesen wird?
Tim
1
Ja, starten Sie den Server neu. Es wird vom Kernel festgelegt.
Nathan C
7

In der neueren Version des CentOS Mongod-Startskripts (/etc/init.d/mongod) sind die Standardeinstellungen in die Startoption integriert:

start()
{
  # Recommended ulimit values for mongod or mongos
  # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
  #
  ulimit -f unlimited
  ulimit -t unlimited
  ulimit -v unlimited
  ulimit -n 64000
  ulimit -m unlimited
  ulimit -u 32000

  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

Wenn Sie die Werte ändern und das Skript nicht ändern möchten, kopieren Sie das Skript nach /etc/init.d/mongod-custom, bearbeiten Sie das benutzerdefinierte Init-Skript, legen Sie Ihre Werte fest und ändern Sie chkconfig so, dass mongod-custom anstelle von mongod verwendet wird.

Thaspius
quelle
6

Um Thaspius 'Antwort zu ergänzen, scheinen die Grenzen so festgelegt zu sein, wie er es im Init-Skript beschreibt, aber ich bekam immer noch die Warnung

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

Dies scheint darauf hinzudeuten, dass das im Init-Skript definierte Dateilimit wirksam wurde, nicht jedoch das Prozesslimit. Folgen Sie auch der Antwort von Nathan C und fügen Sie hinzu

mongod soft nproc 64000

Durch /etc/security/limits.d/90-nproc.confStarten und Neustarten des Systems wurde das Problem behoben.

Wenn jemand in der Lage ist, Licht ins Dunkel zu bringen, warum dies trotz der Werte im Mongodb-Init-Skript notwendig war, bin ich ganz Ohr!

user2050789
quelle
Ebenso ist es für mich ein Rätsel, warum die Einstellung "nproc" ignoriert wurde.
Ostati
1

Nehmen Sie diese Änderung in der /etc/security/limits.confDatei vor. Setzen Sie die harten und weichen Grenzen, und Sie sollten gut sein.

John
quelle
Ich würde empfehlen, Dateien im Inneren zu verwenden, /etc/security/limits.d/anstatt limits.confdirekt mit der Datei zu spielen
Joshua Grigonis
1

Damit die Änderung dauerhaft bleibt, müssen Sie das Init-Skript bearbeiten. In Red Hat 7 enthält das Init-Skript beispielsweise die folgende Zeile:

LimitNOFILE=64000

Sie müssen den nächsten hinzufügen:

LimitNPROC=32000

Starten Sie dann den Dienst neu.

Ich hoffe das hilft.

Ángel Orosa Rodríguez
quelle