Wie kann man das maximale Limit für offene Dateien unter Ubuntu 18.04 erhöhen?

16

Ich habe ausgeführt ulimit -n 65536, die folgenden Zeilen hinzugefügt /etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

Und session required pam_limits.sozu beiden hinzugefügt :

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

Und fs.file-max = 65536zu /etc/sysctl.d/60-file-max.conf.

Nach dem Neustart und der Ausführung ulimit -nin meiner Sitzung erhalte ich jedoch nur 4096 (vorher 1024).

Was vermisse ich?

Alix Axel
quelle

Antworten:

11

Aus dem Handbuch:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd hat eine Option dafür:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

Dies gilt aber auch nur für die grafischen Benutzereinstellungen. Entfernen Sie das #und Sie können es auf 65536 einstellen.

Rinzwind
quelle
1
Ich habe vergessen zu erwähnen, dass ich das auch getan habe.
Alix Axel
1
@AlixAxel: Diese Antwort funktionierte bei mir zusätzlich zu * - nofile 16384(ich habe nur 16384 versucht) in /etc/security/limits.conf.
Doug Smythies
Der 65k ist eine Annahme, und es ist zu erwarten, dass es für die obere Seite der zulässigen Werte fest codierte Grenzen gibt. Vielleicht möchten Sie niedriger als Doug angegeben beginnen;)
Rinzwind
Was meinen Sie mit "Dies gilt aber auch nur für die grafischen Benutzereinstellungen"?
Sinan
Es ändert sich nicht unlimit für alles, was nicht grafisch ist (Anmeldung über tty, ssh usw.). Nur für den Desktop.
Rinzwind
1

Ubuntu 18.04 Schritt für Schritt

Hoffe das alles hilft, ziemlich lange aber es funktioniert (mit Beweis)

Ich bin auf diesen Thread gestoßen, als ich MongoDb auf Ubuntu 18.04 installiert habe

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

Wie Sie sehen, ist es ziemlich alt, aber es funktioniert bei mir.

Hier ist was ich getan habe.

  1. Von MongoDb empfohlene Einstellungen ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (Dateigröße): unbegrenzt
    • -t (CPU-Zeit): unbegrenzt
    • -v (virtueller Speicher): unbegrenzt [1]
    • -l (Speichergröße): unbegrenzt
    • -n (offene Dateien): 64000
    • -m (Speichergröße): unbegrenzt [1] [2]
    • -u (Prozesse / Threads): 64000
  2. Überprüfen Sie meine aktuellen Limits

ubuntu @ isdb-stage: ~ $ ulimit -a
Kerndateigröße (Blöcke, -c) 0
Daten-Seg-Größe (KB, -d) unbegrenzt
Planungspriorität (-e) 0
Dateigröße (Blöcke, -f) unbegrenzt
anstehende Signale (-i) 7873
Maximaler gesperrter Speicher (kByte, -l) 16384
Maximale Speichergröße (KByte, -m) unbegrenzt
offene Dateien (-n) 1024
Pipe-Größe (512 Byte, -p) 8
POSIX-Nachrichtenwarteschlangen (Byte, -q) 819200
Echtzeitpriorität (-r) 0
Stapelgröße (KB, -s) 8192
CPU-Zeit (Sekunden, -t) unbegrenzt
max benutzer prozesse (-u) 7873
virtueller Speicher (KByte, -v) unbegrenzt
Dateisperren (-x) unbegrenzt
  1. Notieren Sie, was geändert werden muss

    • Speichergröße gesperrt , muss auf unbegrenzt gesetzt werden.
    • Dateien öffnen , muss auf 64000 eingestellt sein
    • Prozesse / Threads * , muss auf 64000 gesetzt werden
  2. Was sagt Ubuntu darüber, wie man diese Grenzen ändert?

$ man limits.conf

NAME
   limits.conf - Konfigurationsdatei für das Modul pam_limits

BESCHREIBUNG
   Das Modul "pam_limits.so" wendet das Limit "ulimit", "nice priority" und "number of simultaneous login sessions" auf Benutzeranmeldesitzungen an. Diese Beschreibung der Konfigurationsdateisyntax gilt für die

       /etc/security/limits.conf und * .conf Dateien in der 
       /etc/security/limits.d verzeichnis.
  1. Scheint ziemlich klar zu sein, bearbeite die Datei /etc/security/limits.conf. Ok, lass es uns herausfinden ...

Hier ist der Anfang dieser Datei und sie enthält natürlich sogar Anweisungen. Denken Sie daran, dass dies Open Source ist, das von den Guten geschrieben wurde! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    #Jede Zeile beschreibt ein Limit für einen Benutzer in der Form:                                                                   
    #                                                                                
    #Wo:                                                               
    # kann sein:
    # - ein Benutzername

(Schauen Sie sich die Datei selbst an, wenn Sie weitere Details wünschen.)
  1. Nehmen Sie schließlich die Änderungen vor. Da MongoDb als Mongodb-Gruppe und -Benutzer ausgeführt wird, ist es eine gute Idee, nur diese Benutzerbegrenzungen zu erhöhen. Ich habe '*' hier und da verwendet gesehen, für mich ist das ein Sicherheitsrisiko. Es gibt alle und verschiedene auf dem Server diese Grenzen, die verwendet werden können, um Ihren Server zu maximieren. Machen wir sie also nur für Mongodb-Benutzer.

Hier sind meine Änderungen: -

mongodb soft memlock unbegrenzt
Mongodb harte Memlock unbegrenzt
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
  1. Endlich, endlich, denk dran im Eintrag man limits.conf.

    limits.conf - Konfigurationsdatei für das Modul pam_limits

    Stellen Sie sicher, dass das pam_limits-Modul geladen ist, damit all diese Einschränkungen funktionieren. Dazu bearbeiten Sie /etc/pam.d/common-session. Das steht natürlich auch in der Manpage.

sudo vi /etc/pam.d/common-session

# Fügen Sie dies hinzu, um sicherzustellen, dass pam_limits.so geladen ist.
Sitzung erforderlich pam_limits.so

Ein Neustart zeigt an, dass die Grenzwerte (für Benutzer mongodb) angewendet wurden. Wenn Sie sie stattdessen mit '*' angewendet haben, können Sie prüfen, ohne zum mongodb-Benutzer wechseln zu müssen. Führen Sie einfach diesen Befehl aus.

$ ulimit -a

Kerndateigröße (Blöcke, -c) 0
Daten-Seg-Größe (KB, -d) unbegrenzt
Planungspriorität (-e) 0
Dateigröße (Blöcke, -f) unbegrenzt
anstehende Signale (-i) 7873
Maximaler gesperrter Speicher (KByte, -l) unbegrenzt
Maximale Speichergröße (KByte, -m) unbegrenzt
offene Dateien (-n) 64000
Pipe-Größe (512 Byte, -p) 8
POSIX-Nachrichtenwarteschlangen (Byte, -q) 819200
Echtzeitpriorität (-r) 0
Stapelgröße (KB, -s) 8192
CPU-Zeit (Sekunden, -t) unbegrenzt
Max. Benutzerprozesse (-u) 64000
virtueller Speicher (KByte, -v) unbegrenzt
Dateisperren (-x) unbegrenzt

Wie Sie sehen können, ist das Jubbly Jubbly auf die von uns gewünschten Grenzen eingestellt.

englishPete
quelle