Dimensionnez les sockets proxy NGINX avant d'augmenter worker_connections
Une connexion proxifiée occupe généralement un socket client et un socket amont ; distinguez la limite de connexions du worker de la limite de descripteurs de fichiers du service.
Une connexion proxifiée de longue durée occupe généralement deux sockets : celui du client et celui de l'amont. worker_connections compte les deux côtés. Le multiplier par worker_processes ne promet donc aucune capacité aux utilisateurs du proxy.
Lorsque des connexions échouent, suivez la limite signalée :
| Indice | Réglage ou état du processus à examiner |
|---|---|
| épuisement de worker_connections | Le budget de connexions du worker, sockets amont compris |
| Message du système « Trop de fichiers ouverts » | La limite de descripteurs de fichiers héritée par le processus réel du service |
Les sockets d'écoute, les journaux et les autres fichiers ouverts consomment aussi des descripteurs. La réutilisation des connexions et la composition du trafic modifient le rapport entre utilisateurs et sockets.
worker_rlimit_nofile ajuste les limites du worker selon les permissions de l'environnement. Une unité systemd peut définir LimitNOFILE ; le ulimit d'un shell interactif ne modifie pas le service en cours d'exécution.
Dimensionnez les limites selon la charge et vérifiez qui les consomme. Des clients inattendus ou des connexions amont qui échouent à répétition peuvent épuiser un budget auparavant suffisant. Un nombre de processus ou une limite de mémoire plus élevés ne corrigent pas un manque de descripteurs.