Hervorragende Software und praktische Tutorials
Eine häufige Falle für Betrieb und Wartung in Ubuntu: „Zu viele offene Dateien im System!“
Der Server läuft langsam und meldet häufig 520- oder 521-Fehler. Die CPU- und Speicherauslastung ist niedrig und die Festplatte wird nicht vollständig genutzt. Bei solchen Problemen denken viele Leute, das Problem liege bei PHP. Tatsächlich gibt es neben der PHP-Leistung noch einen weiteren wichtigen Faktor: die Erschöpfung der Dateisystemressourcen. Es klingt unglaublich, aber die Anzahl der in Ubuntu öffenbaren Dateien hat das Limit überschritten!
Nach einer Suche im Internet habe ich festgestellt, dass viele Menschen auf dieses Problem stoßen! Hier zeige ich Ihnen, wie Sie dieses Problem schnell lösen können!
„Zu viele geöffnete Dateien im System!" Dieser Fehler ist ein häufiges Problem der Ressourcenbeschränkung auf Linux/Ubuntu-Systemen und weist darauf hin, dass der Server seine Dateideskriptoren erschöpft hat und keine neuen Verbindungen öffnen kann. In CyberPanel- oder LiteSpeed-Umgebungen (wie etwa HttpListener für Webserver) öffnen Prozesse wie Nginx/Apache/MySQL bei hohem Datenverkehr zu viele Sockets/Dateien, was zu Abstürzen aufgrund von „Zu viele geöffnete Dateien“ führt. Ihre CPU/Ihr Speicher/Ihre Festplatte ist normal und es wird bestätigt, dass der Engpass bei den Deskriptoren liegt (das Standardbenutzerlimit liegt bei 1024, das globale Limit bei 65536). Dadurch werden neue Anforderungen unterbrochen und die 520/504-Fehlerrate 50%+ verstärkt. Glücklicherweise erfordert die Lösung nur die Anpassung von ulimit und sysctl und es dauert 5-10 Minuten, bis sie wirksam wird.
Fehlerbehebung und Lösung für den Fehler „Zu viele geöffnete Dateien“: Analyse der hohen Anzahl geöffneter Dateien auf dem Ubuntu-Server
Bei der Serververwaltung unter Ubuntu/Linux ist der Fehler „Zu viele geöffnete Dateien im System!“ ein klassisches Zeichen für Ressourcenerschöpfung. Er zeigt an, dass das Dateideskriptorlimit des Systems erreicht wurde und keine neuen Dateien oder Socket-Verbindungen mehr geöffnet werden können. Ihre Protokolle zeigen ulimit -n = 65535 (Benutzer-/Prozesslimit) und /proc/sys/fs/file-max = 65535 (globales Systemlimit), aber lsof | wc -l = 2211319 (aktuelle Anzahl geöffneter Dateien), was die Obergrenze bei weitem überschreitet. Dies ist kein Hardwareproblem (CPU/Speicher/Festplatte sind normal), sondern ein Dateihandle-Leck oder die Ansammlung von Anwendungen mit hoher Parallelität (wie Webservern und Datenbanken), die Verbindungen nicht rechtzeitig schließen. Laut den Communitys „Server Fault“ und „Ask Ubuntu“ entstehen Fälle wie 90% dadurch, dass Nginx-/Apache-/MySQL-Prozesshandles nicht freigegeben werden. Dies führt zu einer Datenflut in Spitzenzeiten und verursacht 502/504-Fehler oder Dienstabstürze. Glücklicherweise lässt sich dies schnell beheben, indem das Limit vorübergehend/dauerhaft erhöht und eine Prozessdiagnose durchgeführt wird.
Fehlerbehebung bei geöffneten Dateien: Wer hat was geöffnet?
Verwenden Sie das (bereits installierte) LSOF-Tool zur Diagnose nach Prozess/Typ:
lsof | wc -l
Zeigen Sie die Anzahl der geöffneten Dateien nach Prozess an (um den Übeltäter zu finden):
lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -10 # listet die Top 10 Prozesse auf
Echtzeitüberwachung: watch -n 5 'lsof | wc -l' Alle 5 Sekunden aktualisieren und das Wachstum beobachten.
Das maximale Dateikontingent des Systems beträgt standardmäßig 65.535. Wenn die Anzahl der geöffneten Dateien 65.535 überschreitet, müssen alle geöffneten Dateien in die Warteschlange gestellt werden und die Zugriffsvorgänge werden langsam.
Lösung: Limits erhöhen und Ursachen beheben
Bearbeiten Sie die Datei /etc/security/limits.conf, um das Kontingent zu erhöhen
sudo vi /etc/security/limits.conf
Scrollen Sie nach unten und ändern Sie alle 65535 in 4194304
Bearbeiten Sie dann die Datei /etc/sysctl.conf
vi /etc/sysctl.conf
Ändern Sie den Parameter fs.file-max:
fs.file-max = 4194304
Anwendungsprofil:
sudo sysctl -p
Nachdem alle Einstellungen abgeschlossen sind, starten Sie sudo reboot neu.
Nach dem Neustart hat sich die Geschwindigkeit erhöht!