Dimensiona gli socket proxy di NGINX prima di alzare worker_connections
Una connessione proxiata occupa di solito sia lo socket del client sia quello dell'upstream; distingui il limite di connessioni del worker dal limite di descrittori di file del servizio.
Una connessione proxiata di lunga durata occupa di solito due socket: quello del client e quello dell'upstream. worker_connections conta entrambi i lati. Moltiplicarlo per worker_processes non promette quindi capacità agli utenti del proxy.
Quando le connessioni falliscono, segui il limite segnalato:
| Prova | Impostazione o stato del processo da ispezionare |
|---|---|
| esaurimento di worker_connections | Il budget di connessioni del worker, inclusi gli socket upstream |
| Messaggio del sistema operativo «Troppi file aperti» | Il limite di descrittori di file ereditato dal processo reale del servizio |
Anche gli socket in ascolto, i log e gli altri file aperti consumano descrittori. Il riuso delle connessioni e la miscela di traffico cambiano il rapporto tra utenti e socket.
worker_rlimit_nofile regola i limiti del worker in base ai permessi dell'ambiente. Un'unità systemd può impostare LimitNOFILE; l'ulimit di una shell interattiva non cambia il servizio in esecuzione.
Dimensiona i limiti in base al carico e verifica chi li consuma. Client imprevisti o connessioni upstream che falliscono ripetutamente possono esaurire un budget prima sufficiente. Un numero di processi o un limite di memoria più alti non riparano una carenza di descrittori.