Como posso observar o que o nginx está fazendo? (para resolver: “1024 conexões_de trabalhador não são suficientes”)

8

Eu tenho um site de tráfego muito baixo rodando no nginx, com 4 trabalhadores, 1024 conexões cada.

A cada várias horas, começo a ver no log de erros "1024 worker_connections not be enough" e meu site fica mais lento / torna-se flakey. Uma reinicialização do nginx resolve o problema completamente pelas próximas horas.

Claramente algo estranho está acontecendo, não há como eu atender 4k usuários simultâneos do meu aplicativo.

Além de observar o log de acesso (que parece normal), existe uma maneira de observar com mais detalhes o que o nginx está fazendo?

Existe alguma combinação de configuração notória que pode resultar em conexões antigas sendo mantidas abertas e não fechadas?

Obrigado.

editar isso parece errado

# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
John Bachir
fonte
você está usando proxypass?
Dan R
Não, não estou usando nenhum tipo de configuração de proxy. É um site de trilhos para passageiros.
John Bachir
1
Talvez tente nginx.org/en/docs/debugging_log.html habilitando isso para ver com quais solicitações isso acontece. Não estou familiarizado com passageiros / trilhos. Se estiver na porta que está se conectando aos clientes da Web, o cliente fechou a conexão, mas o nginx não fechou de lado.
Dan R

Respostas:

7

Sem passagem de proxy / proxy reverso

max_clients = worker_processes * worker_connections

Com proxy reverso

max_clients = (worker_processes * worker_connections ) / (X * 2)

2 é porque você abre uma conexão com o que você está proxy

X é, no entanto, muitas conexões simultâneas que esses clientes fazem para você

Para ver quais conexões estão por aí, você pode executar lsof -i :PORT. Ele mostrará todas as conexões abertas ao nginx e seu estado.

Dan R
fonte
tentando que ... lsof 4,81 no Ubuntu ... "caráter opção ilegal: I"
John Bachir
veja lsof output na edição acima
John Bachir
1
Não quis capitalizar a -i
Dan R