Nginx encaisse sans effort des milliers de connexions par worker. Si votre site est lent, il attend presque toujours PHP ou la base derrière. Augmenter ces chiffres déplace la file, il ne la raccourcit pas.
Les deux chiffres
worker_processes auto; # one per CPU core - leave it
events {
worker_connections 1024; # per worker
multi_accept on;
}
auto suit le nombre de cœurs, et c'est la bonne réponse sur toute machine en deçà d'une très inhabituelle. La capacité totale, c'est les workers multipliés par les connexions, et un navigateur qui ouvre plusieurs connexions vers un même site compte plusieurs fois.
L'erreur qui veut dire : augmentez
grep "worker_connections are not enough" /var/log/nginx/error.log
Cette ligne, et elle seule, est une raison d'augmenter le chiffre. Sans elle, ce n'est pas cette limite que vous touchez.
Ce qui est d'ordinaire la vraie limite
- Les enfants PHP-FPM - la file est là, pas dans Nginx. Voyez dimensionner un pool PHP-FPM.
- Les connexions à la base - voyez trop de connexions.
- Les fichiers ouverts - le worker atteint la limite du système bien avant la sienne.
# the one worth raising, with the connections
worker_rlimit_nofile 65535;
Recharger pour appliquer, jamais redémarrer
sudo nginx -t && sudo systemctl reload nginx
Un rechargement lance de nouveaux workers pour les nouvelles connexions et laisse les anciens finir. Un redémarrage laisse tomber ce qui est en vol, ce qui sur un site fréquenté fait une erreur visible pour quelqu'un.
