3 segundos é tempo limite do tcp se o servidor não estiver respondendo. Verifique os seus registros nginx para tempos limite de conexão.
Estou executando vários servidores fastcgi por trás do Nginx. Eu corro 3 trabalhadores Nginx e 6 servidores fastcgi como back-ups upstream.
Quando executo testes de carga de 1 req por segundo, posso ver claramente que, em média, uma resposta é de 0,1 seg, mas, de tempos em tempos, há respostas de 3,1 seg.
É um número suspeito e determinista e acontece mesmo com cargas muito pequenas de tempos em tempos. Tanto a CPU quanto a memória não têm nenhum problema.
Alguma ideia de onde esse atraso pode estar vindo? Alguma sugestão de como depurar isso?
Muito obrigado, Barry.
3 segundos é tempo limite do tcp se o servidor não estiver respondendo. Verifique os seus registros nginx para tempos limite de conexão.
Você está executando solicitações paralelas? Se sim, por favor veja abaixo. Se não, sugiro que você procure em seus servidores de back-end. Talvez seu ambiente tenha algum tipo de ferramenta de criação de perfil, que você pode usar também para ver o tempo de uma solicitação recebida até uma resposta ser enviada.
Se você estiver executando em paralelo: se todos os seus 6 servidores fastcgi estiverem ocupados servindo pedidos, o próximo pedido terá que esperar até que um servidor fastcgi esteja pronto para processá-lo. Se as solicitações que você está fazendo em suas avaliações forem de natureza um tanto semelhante e tiverem um tempo de resposta semelhante, você verá os mesmos padrões repetidas vezes.
Qual é o seu backend? É encadeado?
Aqui está o que eu sugiro:
A propósito, use apenas um trabalhador nginx, você não precisa de mais do que um, a menos que você tenha toneladas de tráfego.