É uma questão de interpretação. Você não está fazendo nada errado. Aqui está como eu interpreto o gráfico. É um gráfico de distribuição de x vs y, onde:
- y é o tempo de resposta em ms,
- x é o número de solicitações retornadas dentro de y ms cumulativamente.
As declarações baseadas na distribuição de solicitação para o nó (sozinho) seriam:
- 7000 de 10000 solicitações foram retornadas em ~ 14 ms
- 2000 dos restantes 3000 pedidos foram devolvidos em 14-18 ms
- 800 solicitações restantes foram retornadas em 18 a 22 ms
- Restantes 200 foram devolvidos dentro de 35 ms
Mas ao analisar cumulativamente, seria:
- 7000 de 10000 solicitações foram retornadas em 14 ms
- 9000 de 10000 solicitações foram retornadas em 18 ms
- 9800 de 10000 solicitações foram retornadas em 22 ms
- Todos foram devolvidos dentro de 35 ms
A configuração do cluster mostrará resultados mais rápidos do que um único nó conforme o esperado.
Para os resultados nginx, haverá uma quantidade fixa de atraso no processamento / balanceamento de carga. Olhando para a figura, seria cerca de 9-10 ms de atraso, o que é o esperado. Isso não significa que a configuração do nginx seja ruim. Ele retorna a maioria das solicitações em 30 ms (pequena diferença de outras configurações).
Você forneceu solicitações simultâneas como 1000 no Apache Bench, o que não exige muito balanceamento de carga, pois até um único nó está lidando com muita carga com facilidade. Dar mais conexões simultâneas / processamento mais pesado por solicitação fará explodir o gráfico do nó único (ele aumentará cedo para um número menor de solicitações). O Nginx sacrifica o tempo de processamento pequeno para permitir que mais solicitações simultâneas sejam tratadas, mantendo o tempo de resposta razoável.