Plotou os resultados ab do nó, cluster e nginx, resultados ímpares?

2

Eu fiz um teste com ab -n 10000 -c 1000 contra node.js com diferentes configurações, cada uma retornando a string Hello World! . Resultados parece estranho para mim.

O eixo X é o número de solicitações, y é o tempo de resposta em milissegundos.

  • Node é o servidor sozinho
  • O nó (cluster) é um servidor que usa o módulo cluster (dois núcleos)
  • O Nginx (balancer) está atuando como um balanceador na frente de (duas) instâncias do nó executando o mesmo código

A primeira coisa é que o nginx é muito lento como balanceador, ele tem o pior resultado entre os três. É melhor do que o nó sozinho apenas até 1000 pedidos (mas mais lento que o cluster). Outra coisa estranha é que o nó sozinho tem um tempo de resposta constante até ~ 7000 (?). A partir de ~ 7000 pedidos, o cluster tem um tempo de resposta maior que o nó, e isso parece muito estranho.

Como você interpretaria esses resultados? Estou fazendo errado (banco ou plotagem de erros)?

ApacheBench 2.3 (1430300), Node.js 0.10.5, nginx 1.4.1. Executando no Xubuntu 13.04 x64.

    
por user34295 15.05.2013 / 12:12

1 resposta

1

É 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.

    
por 15.05.2013 / 16:35