Dimensione os sockets de proxy do NGINX antes de aumentar worker_connections
Uma conexão proxiada costuma ocupar um socket do cliente e outro do upstream; distinga o limite de conexões do worker do limite de descritores de arquivo do serviço.
Uma conexão proxiada de longa duração costuma ocupar dois sockets: o do cliente e o do upstream. worker_connections conta os dois lados. Por isso, multiplicá-lo por worker_processes não promete capacidade aos utilizadores do proxy.
Quando as conexões falham, siga o limite comunicado:
| Evidência | Configuração ou estado do processo a inspecionar |
|---|---|
| esgotamento de worker_connections | O orçamento de conexões do worker, incluindo sockets de upstream |
| Mensagem do sistema operativo «Demasiados ficheiros abertos» | O limite de descritores de arquivo herdado pelo processo real do serviço |
Sockets de escuta, registos e outros arquivos abertos também consomem descritores. A reutilização de conexões e a mistura de tráfego alteram a relação entre utilizadores e sockets.
worker_rlimit_nofile ajusta os limites do worker conforme as permissões do ambiente. Uma unidade systemd pode definir LimitNOFILE; o ulimit de uma shell interativa não altera o serviço em execução.
Dimensione os limites para a carga de trabalho e inspecione quem os consome. Clientes inesperados ou conexões de upstream que falham repetidamente podem esgotar um orçamento antes suficiente. Um maior número de processos ou limite de memória não repara a falta de descritores.