


Qu'est-ce qui provoque une erreur 'trop de fichiers ouverts' dans Nginx?
Lorsque Nginx connaît une erreur "trop de fichiers ouverts", c'est généralement parce que le système ou le processus a atteint la limite du descripteur de fichier. Les solutions incluent: 1. Augmenter les limites douces et dures du système Linux, définir les paramètres pertinents de Nginx ou exécuter les utilisateurs dans /etc/security/limits.conf; 2. Ajustez la valeur Worker_Connections de Nginx pour s'adapter au trafic attendu et assurer la configuration rechargée; 3. Augmentez le descripteur de fichier au niveau du système Limite supérieure Fs.File-Max, Edit /etc/Sysctl.conf et appliquez des modifications; 4. Optimiser l'utilisation du journal et des ressources, réduisez l'utilisation de la poignée des fichiers inutile, comme l'utilisation d'Open_Log_File_Cache, la fusion des journaux, d'éviter les connexions proxy redondantes, etc. Une fois le réglage terminé, vous pouvez surveiller le nombre réel de fichiers ouverts via la commande LSOF.
Lorsque Nginx lance une erreur «trop de fichiers ouverts», cela signifie généralement que le système ou le processus a appuyé sur sa limite de descripteur de fichier. Cela peut entraîner des connexions échouées, des services au point mort ou même des plantages s'ils ne sont pas traités.
Voici ce qui cause généralement ce problème et comment le gérer.
1. Limites de descripteur de fichiers dans Linux
Les systèmes Linux imposent des limites au nombre de descripteurs de fichiers (FD) qu'un processus peut ouvrir. Ces limites sont disponibles en deux saveurs: douce et dure.
- Limite souple - ce que le processus est actuellement autorisé à utiliser.
- Limite dure - La valeur maximale à laquelle la limite molle peut être augmentée.
Si Nginx atteint la limite souple, vous verrez le message «trop de fichiers ouverts» dans les journaux. Vous pouvez vérifier les limites de courant en utilisant:
ulimit -n
Pour augmenter la limite, modifiez /etc/security/limits.conf
et ajoutez:
Nginx Soft Nofile 65536 nginx hard nofile 65536
Ou pour l'utilisateur exécutant nginx:
www-data soft nofile 65536 www-data hard nofile 65536
Assurez-vous également que pam_limits.so
est activé dans votre configuration PAM afin que ces paramètres soient appliqués à la connexion.
2. Réglage des connexions de travailleurs Nginx
Dans nginx.conf
, il y a une directive appelée worker_connections
. Il définit le nombre de connexions simuladées que chaque processus de travailleur peut gérer.
Cette ligne pourrait ressembler:
événements { Worker_Connections 1024; }
Chaque connexion utilise au moins un descripteur de fichiers - parfois plus si des connexions SSL ou en amont sont impliquées.
Donc, si vous gérez des milliers d'utilisateurs simultanés, le 1024 par défaut peut être trop faible.
Tu devrais:
- Estimez votre trafic attendu.
- Multipliez par le FDS moyen par connexion (souvent 2 à 4).
- Définissez
worker_connections
supérieur à cela.
N'oubliez pas de recharger Nginx après avoir changé ceci:
rechargement de nginx -s
Gardez également un œil sur le nombre total de processus de travail multipliés par worker_connections
, car cela vous donne les connexions maximales totales à tous les travailleurs.
3. Capeur de descripteur de fichiers à l'échelle du système
Même si vous configurez correctement Nginx et l'utilisateur, l'ensemble du système a également un CAP FD global contrôlé par fs.file-max
.
Vérifiez la valeur actuelle avec:
chat / proc / sys / fs / file-max
S'il est bas, soulevez-le en modifiant /etc/sysctl.conf
:
Fs.File-max = 2097152
Puis appliquez des modifications:
sysctl -p
Cette étape est souvent négligée mais essentielle sous une charge élevée. Considérez-le comme le plafond pour tous les processus combinés - y compris Nginx, PHP, MySQL, etc.
4. Ouvrez les fichiers journaux et les ressources inutilisées
Chaque journal d'accès, journal d'erreur ou connexion en amont Nginx ouvre consomme un descripteur de fichiers.
Si vous avez des dizaines d'hôtes virtuels, chaque écriture pour séparer les journaux, ceux qui s'additionnent rapidement.
Certaines choses à considérer:
- Utilisez
open_log_file_cache
pour réduire les frais généraux. - Consolider les journaux dans la mesure du possible.
- Évitez les blocs en amont ou les connexions proxy inutiles.
En outre, certains modules ou intégrations tierces mal configurées peuvent fuir les FD au fil du temps - surtout si elles ne clôturent pas correctement les connexions en amont.
Fondamentalement, l'erreur "trop de fichiers ouverts" revient à des limites trop faibles pour la charge de travail. Vérifiez les ulimits, tweak worker_connections
, augmentez les capuchons à l'échelle du système et minimisez les poignées de fichiers non équivoques. Une fois configuré, surveillez avec des outils comme lsof -p $(pidof nginx)
pour voir ce qui est réellement ouvert.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Nginx et Apache sont tous deux des serveurs Web puissants, chacun avec des avantages et des inconvénients uniques en termes de performances, d'évolutivité et d'efficacité. 1) Nginx fonctionne bien lors de la gestion du contenu statique et de la proxyation inverse, adaptée aux scénarios de concurrence élevés. 2) Apache fonctionne mieux lors du traitement du contenu dynamique et convient aux projets qui nécessitent une prise en charge des modules riches. La sélection d'un serveur doit être déterminée en fonction des exigences et des scénarios du projet.

Nginx convient plus à la gestion des connexions simultanées élevées, tandis qu'Apache convient plus aux scénarios où des configurations complexes et des extensions de module sont nécessaires. 1.Nginx est connu pour ses performances élevées et sa faible consommation de ressources, et convient à une concurrence élevée. 2.Apache est connu pour sa stabilité et ses riches extensions de modules, qui conviennent aux besoins de configuration complexes.

Nginx et Apache ont chacun leurs propres avantages et inconvénients, et le choix doit être basé sur des besoins spécifiques. 1.Nginx convient aux scénarios de concurrence élevés en raison de son architecture asynchrone non bloquant. 2. Apache convient aux scénarios à faible monnaie qui nécessitent des configurations complexes, en raison de sa conception modulaire.

Le code PHP peut être exécuté de plusieurs manières: 1. Utilisez la ligne de commande pour entrer directement le "nom de fichier PHP" pour exécuter le script; 2. Mettez le fichier dans le répertoire racine du document et accédez-y via le navigateur via le serveur Web; 3. Exécutez-le dans l'IDE et utilisez l'outil de débogage intégré; 4. Utilisez le bac à sable PHP en ligne ou la plate-forme d'exécution de code pour les tests.

La compréhension du chemin du fichier de configuration de Nginx et des paramètres initiaux est très importante car il s'agit de la première étape dans l'optimisation et la gestion d'un serveur Web. 1) Le chemin du fichier de configuration est généralement /etc/nginx/nginx.conf. La syntaxe peut être trouvée et testée à l'aide de la commande nginx-t. 2) Les paramètres initiaux incluent les paramètres globaux (tels que l'utilisateur, worker_processs) et les paramètres HTTP (tels que l'inclusion, log_format). Ces paramètres permettent la personnalisation et l'extension en fonction des exigences. Une configuration incorrecte peut entraîner des problèmes de performances et des vulnérabilités de sécurité.

Linux System restreint les ressources utilisateur via la commande UliMIT pour éviter une utilisation excessive des ressources. 1.Ulimit est une commande shell intégrée qui peut limiter le nombre de descripteurs de fichiers (-n), la taille de la mémoire (-v), le nombre de threads (-u), etc., qui sont divisés en limite douce (valeur effective actuelle) et limite dure (limite supérieure maximale). 2. Utilisez directement la commande ulimit pour une modification temporaire, telle que Ulimit-N2048, mais elle n'est valable que pour la session en cours. 3. Pour un effet permanent, vous devez modifier /etc/security/limits.conf et les fichiers de configuration PAM, et ajouter SessionRequiredPam_limits.so. 4. Le service SystemD doit définir Lim dans le fichier unitaire

Lors de la configuration de Nginx sur Debian System, les éléments suivants sont quelques conseils pratiques: la structure de base des paramètres globaux du fichier de configuration: définir les paramètres comportementaux qui affectent l'intégralité du service NGINX, tel que le nombre de threads de travail et les autorisations d'utilisateurs en cours d'exécution. Pièce de gestion des événements: Décider comment Nginx s'occupe des connexions réseau est une configuration clé pour améliorer les performances. Pièce de service HTTP: contient un grand nombre de paramètres liés au service HTTP et peut intégrer plusieurs serveurs et blocs de localisation. Options de configuration de base Worker_Connections: Définissez le nombre maximal de connexions que chaque thread de travailleur peut gérer, généralement définie sur 1024. Multi_accept: activez le mode de réception multi-connexion et améliorez la capacité de traitement simultané. s

Nginxservceswebcontentandactsasareverseproxy, loadBalancer et m /r.1) itefficientlyServisetaticContent likehtmlandimages.2) itfunctionsasareverseproxyandloadBalancer, distribution.
