


Was verursacht einen Fehler 'zu viele ge?ffnete Dateien' in Nginx?
Jul 05, 2025 am 12:14 AMWenn Nginx einen Fehler "zu viele ge?ffnete Dateien" erf?hrt, liegt dies normalerweise daran, dass das System oder der Prozess die Dateideskriptorgrenze erreicht hat. Zu den L?sungen geh?ren: 1.. Erh?hen Sie die weichen und harten Grenzen des Linux -Systems, setzen Sie die relevanten Parameter von Nginx oder führen Sie Benutzer in /etc/security/limits.conf aus; 2. Passen Sie den Wert von Worker_Connections von Nginx an, um sich an den erwarteten Verkehr anzupassen, und stellen Sie sicher, dass eine neu beladene Konfiguration festgelegt wird. 3.. Erh?hen Sie die Obergrenze des Systems auf Dateidatei Deskriptor fs.file-max, bearbeiten /etc/sysctl.conf und ?nderungen anwenden; 4. Optimieren Sie die Nutzung von Protokoll- und Ressourcen, reduzieren Sie die Verwendung der unn?tigen Dateihandle, z. B. die Verwendung von Open_log_file_cache, Zusammenführen von Protokollen, der Vermeidung redundanter Proxy -Verbindungen usw. Nach Abschluss der Anpassung k?nnen Sie die tats?chliche Anzahl von Open -Dateien über den Befehl LSOF überwachen.
Wenn Nginx einen Fehler ?zu viele ge?ffnete Dateien“ ausl?st, bedeutet dies normalerweise, dass das System oder der Prozess die Dateideskriptorgrenze erreicht hat. Dies kann zu fehlgeschlagenen Verbindungen, blockierten Diensten oder sogar Abstürfern führen, wenn sie nicht behandelt werden.
Folgendes verursacht dieses Problem normalerweise und wie man damit umgeht.
1. Dateideskriptorgrenzen unter Linux
Linux -Systeme stellen die Anzahl der Dateideskriptoren (FDs), die ein Prozess ?ffnen kann, Grenzen auf. Diese Grenzen sind in zwei Geschmacksrichtungen erh?ltlich: weich und hart.
- Soft Limit - Was der Prozess derzeit verwenden darf.
- Festgrenze - Der Maximalwert, auf den die Softgrenze erh?ht werden kann.
Wenn Nginx das Soft Limit erreicht, wird in den Protokollen die Nachricht ?zu viele ge?ffnete Dateien“ angezeigt. Sie k?nnen die aktuellen Grenzwerte mit:
Ulimit -n
Um die Grenze zu erh?hen, bearbeiten Sie /etc/security/limits.conf
und fügen Sie hinzu:
Nginx Soft NoFile 65536 Nginx Hard NoFile 65536
Oder für den Benutzer, der Nginx ausführt:
www-data Soft NoFile 65536 www-data Hard NoFile 65536
Stellen Sie au?erdem sicher, dass pam_limits.so
in Ihrer PAM -Konfiguration aktiviert ist, damit diese Einstellungen bei der Anmeldung angewendet werden.
2. Einstellung von Nginx Worker Connections
In nginx.conf
gibt es eine Richtlinie namens worker_connections
. Es definiert, wie viele simulatenische Verbindungen jeder Arbeitsprozess verarbeiten kann.
Diese Zeile k?nnte aussehen wie:
Ereignisse { Worker_Connections 1024; }
Jede Verbindung verwendet mindestens einen Dateideskriptor - manchmal mehr, wenn SSL- oder Upstream -Verbindungen beteiligt sind.
Wenn Sie also Tausende von gleichzeitigen Benutzern bearbeiten, ist der Standard 1024 m?glicherweise zu niedrig.
Du solltest:
- Sch?tzen Sie Ihren erwarteten Verkehr.
- Multiplizieren Sie mit dem durchschnittlichen FDS pro Verbindung (oft 2–4).
- Stellen Sie
worker_connections
h?her ein.
Vergessen Sie nicht, Nginx neu zu laden, nachdem Sie dies ge?ndert haben:
Nginx -S Reload
Behalten Sie auch die Gesamtzahl der Arbeitsprozesse im Auge, die von worker_connections
mehrere Pl?tze verlegt haben, da Sie die gesamten maximalen Verbindungen über alle Arbeitnehmer hinweg erhalten.
3. systemweite Dateideskriptorkappe
Selbst wenn Sie NGINX- und Benutzergrenzen korrekt konfigurieren, verfügt das gesamte System auch über eine globale FD-Kappe, die von fs.file-max
gesteuert wird.
überprüfen Sie den aktuellen Wert mit:
Cat/Proc/Sys/FS/Datei-Max
Wenn es niedrig ist, erh?hen Sie es, indem Sie /etc/sysctl.conf
bearbeiten:
fs.file-max = 2097152
Dann ?nderungen anwenden:
sysctl -p
Dieser Schritt wird oft übersehen, aber unter hoher Belastung unerl?sslich. Betrachten Sie es als die Decke für alle zusammengefügten Prozesse - einschlie?lich Nginx, PHP, MySQL usw.
4. ?ffnen Sie Protokolldateien und nicht verwendete Ressourcen
Jedes Zugriffsprotokoll, Fehlerprotokoll oder die Upstream -Verbindung Nginx ?ffnet einen Dateideskriptor.
Wenn Sie Dutzende virtueller Hosts haben, die jedes Schreiben zu getrennten Protokollen haben, summieren sich diese schnell.
Einige Dinge zu berücksichtigen:
- Verwenden Sie
open_log_file_cache
, um den Overhead zu reduzieren. - Konsolidieren Sie die Protokolle nach M?glichkeit.
- Vermeiden Sie unn?tige Upstream -Bl?cke oder Proxy -Verbindungen.
Au?erdem k?nnen einige Module oder falsch konfigurierte Integrationen von Drittanbietern im Laufe der Zeit FDS auslaufen-insbesondere, wenn sie nicht ordnungsgem?? die optimistischen Verbindungen schlie?en.
Grunds?tzlich sind der Fehler "zu viele ge?ffnete Dateien" darauf zurückzuführen, dass die Grenzen für die Workload zu niedrig sind. überprüfen Sie Ulimits, obere worker_connections
, erh?hen Sie systemweite Kappen und minimieren Sie die ungleichlichen Dateigriffe. überwachen Sie nach der Konfiguration mit Tools wie lsof -p $(pidof nginx)
um zu sehen, was tats?chlich offen ist.
Das obige ist der detaillierte Inhalt vonWas verursacht einen Fehler 'zu viele ge?ffnete Dateien' in Nginx?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Nginx und Apache sind beide leistungsstarke Webserver mit einzigartigen Vor- und Nachteilen in Bezug auf Leistung, Skalierbarkeit und Effizienz. 1) Nginx funktioniert bei der Behandlung statischer Inhalte und dem Umkehren von Proxen, geeignet für hohe Parallelit?tsszenarien. 2) Apache funktioniert bei der Verarbeitung dynamischer Inhalte besser und eignet sich für Projekte, für die ein reichhaltiges Modulunterstützung erforderlich ist. Die Auswahl eines Servers sollte basierend auf Projektanforderungen und Szenarien ermittelt werden.

Nginx eignet sich besser zum Umgang mit hohen gleichzeitigen Verbindungen, w?hrend Apache besser für Szenarien geeignet ist, in denen komplexe Konfigurationen und Modulverl?ngerungen erforderlich sind. 1.Nginx ist bekannt für seine hohe Leistung und den niedrigen Ressourcenverbrauch und ist für eine hohe Parallelit?t geeignet. 2.APACHE ist bekannt für seine Stabilit?t und die reichhaltigen Modulverl?ngerungen, die für komplexe Konfigurationsanforderungen geeignet sind.

Nginx und Apache haben jeweils ihre eigenen Vor- und Nachteile, und die Auswahl sollte auf bestimmten Bedürfnissen beruhen. 1.Nginx ist aufgrund seiner asynchronen nicht blockierenden Architektur für hohe Parallelit?tsszenarien geeignet. 2. Apache eignet sich für Szenarien mit niedriger Konsequenz, die aufgrund seines modularen Designs komplexe Konfigurationen erfordern.

Der PHP -Code kann auf viele Arten ausgeführt werden: 1. Verwenden Sie die Befehlszeile, um den "PHP -Dateinamen" direkt einzugeben, um das Skript auszuführen. 2. Einlegen Sie die Datei in das Dokument -Root -Verzeichnis und greifen Sie über den Browser über den Webserver darauf zu. 3. Führen Sie es in der IDE aus und verwenden Sie das integrierte Debugging-Tool. V.

Das Verst?ndnis des Konfigurationsdateipfads von NGINX und der ersten Einstellungen ist sehr wichtig, da er der erste Schritt zur Optimierung und Verwaltung eines Webservers ist. 1) Der Konfigurationsdateipfad ist normalerweise /etc/nginx/nginx.conf. Die Syntax kann mit dem Befehl nginx-t gefunden und getestet werden. 2) Die ersten Einstellungen umfassen globale Einstellungen (z. B. Benutzer, Worker_Processes) und HTTP -Einstellungen (z. B. inklusive log_format). Diese Einstellungen erm?glichen die Anpassung und Erweiterung gem?? den Anforderungen. Eine falsche Konfiguration kann zu Leistungsproblemen und Sicherheitslücken führen.

Linux -System beschr?nkt die Benutzerressourcen durch den Befehl ulimit, um eine überm??ige Verwendung von Ressourcen zu verhindern. 1.ulimit ist ein integrierter Shell-Befehl, mit dem die Anzahl der Dateideskriptoren (-n), die Speichergr??e (-V), die Threadzahl (-U) usw. begrenzt werden kann, die in Soft Limit (aktueller effektiver Wert) und hartem Grenze (maximale Obergrenze) unterteilt sind. 2. Verwenden Sie den Befehl ulimit direkt zur vorübergehenden ?nderung, wie z. B. Ulimit-N2048, ist jedoch nur für die aktuelle Sitzung gültig. 3. Für den dauerhaften Effekt müssen Sie /etc/security/limits.conf- und PAM -Konfigurationsdateien ?ndern und SessionRequiredpam_Limits.so hinzufügen. 4. Der SystemD -Dienst muss Lim in der Einheitsdatei einstellen

Bei der Konfiguration von NGINX im Debian -System finden Sie einige praktische Tipps: Die grundlegende Struktur der globalen Einstellungen der Konfigurationsdatei: Definieren Sie Verhaltensparameter, die den gesamten NGINX -Dienst beeinflussen, z. B. die Anzahl der Worker -Threads und die Berechtigungen für laufende Benutzer. Ereignisbearbeitungsteil: Die Entscheidung, wie NGINX mit Netzwerkverbindungen umgeht, ist eine wichtige Konfiguration zur Verbesserung der Leistung. HTTP -Service -Teil: Enth?lt eine gro?e Anzahl von Einstellungen im Zusammenhang mit dem HTTP -Dienst und kann mehrere Server und Standortbl?cke einbetten. Kernkonfigurationsoptionen Worker_Connections: Definieren Sie die maximale Anzahl von Verbindungen, die jeder Worker-Thread verarbeiten kann, normalerweise auf 1024. Multi_accept: Aktivieren Sie den Empfangsmodus mit mehreren Konnection-Empfang und verbessern Sie die F?higkeit der gleichzeitigen Verarbeitung. S

NginxServeswebcontentandactsaSareverseverproxy, Lastballer und More.1) iTeffictyServesTaticContent -LikeHtmlandImages.2) itFunctionsSareverseStaticContent -likeHtmlandImages.2) iTFunctionsAsareverseproxyandAnloadBalancer, DistributingTrafficacrossSservers.3)
