Heute ist mein Server mit Too many open files in system: aber ich abgestürzt bereits hohe Werte haben, was ist ein Maximalwert dafür?

Ich habe das Gefühl, dass es bei Google keine guten Ergebnisse dafür gibt. Ich erkläre, was beim Festlegen dieser Werte berücksichtigt werden muss. Sie sagen nur, dass sie auf 100.000 festgelegt werden sollen.

Ich habe einen 32-GB-RAM-Server, der derzeit nur 10 GB verwendet. Ich gehe davon aus, dass eine Erhöhung der Dateilimits auf sehr hohe Werte die RAM-Nutzung erhöht. Gibt es eine Formel, mit der Sie dies berechnen können? Wie für 8 GB RAM Kann X Anzahl von Dateien geöffnet sein?

Aktuelle Einstellungen:

cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024 

Kommentare

  • Keine Antwort, aber es fällt mir auf, dass die Begrenzung der maximalen Anzahl geöffneter Dateien keine Möglichkeit ist, RAM, sondern Festplatten-E / A-Leistung zu sparen. Wenn Sie eine große Anzahl offener Dateien zulassen, müssen Sie (möglicherweise) eine große Anzahl gleichzeitiger Dateien gleichzeitig zulassen Festplattenzugriffe. Außerdem haben Sie wahrscheinlich ein systemweites Gesamtlimit sowie ein pro-Prozess-Limit. Da ich kein Linux-Benutzer bin, kann ich ' nicht viel mehr darüber sagen das, anders als das ulimit zeigt / legt ein Ressourcenlimit pro Prozess fest.
  • Ist dies überhaupt ein Problem für SSD-Festplatten? Es ist ' ein Server und es ist mir ' egal, ob es stirbt, das Hosting-Unternehmen wird es einfach ersetzen und ich habe Backups. Außerdem habe ich gelesen, dass Netzwerk-Sockets auch dieses Problem verursachen können. Ich kümmere mich hauptsächlich um die Leistung. Ich ' bezahle für die Hardware entweder, wenn ich 100% oder 5% verwende, solange ' die Leistung verbessert. Warum ist das wichtig? Für einen Cloud-Server könnte dies ein Problem sein, aber für dedizierte Hardware nicht wirklich
  • Ja, die Anzahl der offenen Sockets wird auch für diese Grenze angerechnet (offene Dateideskriptoren im Allgemeinen). Ich habe das vergessen. Wenn RAM Ihr einziges Problem ist, glaube ich nicht, dass ich mir Sorgen machen würde, das Limit zu erhöhen, es sei denn, dies bedeutet, dass der von Ihnen bereitgestellte Dienst mit der Zuweisung von eginnt. ' i> zusätzlicher Speicher für jeden offenen Socket. Dies könnten nur Sie untersuchen.

Antwort

Wie Kusalananda sagt, file-max hat keinen direkten Einfluss auf die Speichernutzung, ermöglicht es den Prozessen jedoch, mehr Dateideskriptoren zu öffnen, was sich negativ auswirkt (sowohl durch die Verfolgung von Dateibeschreibungen im Kernel als auch durch die Erhöhung des Arbeitsspeichers) Verwendung in den Prozessen unter Verwendung dieser Beschreibungen und Deskriptoren) – Die Kernelkommentare schlagen ungefähr ein Kilobyte pro Datei für die Kerneldaten vor und reduzieren den Standardwert von file-max (8192), wenn dies endet Dies entspricht mehr als 10% des Arbeitsspeichers beim Systemstart ( dh sind nur 80 MB RAM vorhanden). Der vom Kernel auferlegte Maximalwert ist der Maximalwert, der in einer Variablen vom Typ long in C für Ihre Architektur gespeichert werden kann.

Wenn Sie file-max, Sie sollten auch inode-max erhöhen; Die Kerneldokumentation besagt, dass dies „3-4 mal größer als der Wert in file-max“ sein sollte, da stdin, stdout und Netzwerksockets auch eine Inode-Struktur benötigen Behandeln Sie sie. “

Beachten Sie, dass das Drücken von file-max zu einer Kernel-Protokollmeldung mit der Meldung“ VFS: file-max limit n erreicht „führt ”, Mit dem entsprechenden Wert für n . Wenn Sie das nicht in Ihren Protokollen haben, drücken Sie entweder nicht file-max oder filtern Ihre Protokolle zu stark (es handelt sich um eine Protokollnachricht auf Informationsebene).

(file-max schränkt Prozesse mit CAP_SYS_ADMIN nicht ein, sodass das Schlagen nicht alles aufhält.)

Kommentare

  • Es ist also kein Nachteil, willkürlich hohe Zahlen zu haben? Ich sehe ' inode-max in meinem System überhaupt nicht? Ubuntu 16.04 hier. Ich möchte nur verhindern, dass mein Server erneut abstürzt. Ich führe mehrere Webdienste auf diesem Server aus und ' kümmere mich nicht um die Ressourcennutzung.
  • Der Nachteil ist, dass außer Kontrolle geratene Prozesse werden nicht von der Gesamtbeschränkung für Dateibeschreibungen erfasst, sodass sie auf andere Weise zu Ressourcenmangel führen können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.