Nginx regge migliaia di connessioni per worker senza fatica. Se il suo sito è lento, quasi sempre sta aspettando il PHP o il database che gli sta dietro. Alzare questi numeri sposta la coda, non la accorcia.

I due numeri

worker_processes auto;      # one per CPU core - leave it
events {
    worker_connections 1024;  # per worker
    multi_accept on;
}

auto segue il numero di core, ed è la risposta giusta su ogni macchina al di qua di una molto insolita. La capacità totale è i worker moltiplicati per le connessioni, e un browser che apre più connessioni verso un solo sito conta più volte.

L'errore che vuol dire: alzalo

grep "worker_connections are not enough" /var/log/nginx/error.log

Quella riga, e soltanto quella, è un motivo per alzare il numero. Senza di essa, non è quel limite che sta toccando.

Qual è di solito il limite vero

# the one worth raising, with the connections
worker_rlimit_nofile 65535;

Per applicare si ricarica, non si riavvia mai

sudo nginx -t && sudo systemctl reload nginx
Un reload avvia nuovi worker per le nuove connessioni e lascia finire i vecchi. Un restart butta via ciò che è in volo, e su un sito affollato quello è un errore che qualcuno vede.