Aumento do TTFB no balanceamento de carga HTTP

Aumento do TTFB no balanceamento de carga HTTP

Temos nosso próprio rack em Amsterdã, Leaseweb.

Fazemos balanceamento de carga HTTP (via Cloudflare) com 3 servidores IIS Windows 2019:

  • Servidor 1: Servidor supermicro bare-metal. Executa IIS, MySQL8 e Redis.
  • Servidor 2: VM no servidor Dell. Executa o IIS.
  • Servidor 3: VM no servidor Dell (cópia exata do servidor2). Executa o IIS.

Os arquivos são servidos localmente em todas as causas (via replicação)

Agora o problema é que o TTFB, comomedido localmente no servidoré maior no servidor 2 e no servidor 3 (VMs).

Executando (múltiplos) testes LOCALMENTE com o Chrome:

Servidor1:

  • Espera (TTFB): 269ms
  • Espera (TTFB): 255ms
  • Espera (TTFB): 253ms

Servidor 2:

  • Espera (TTFB): 379ms
  • Espera (TTFB): 376ms
  • Espera (TTFB): 369ms

Servidor 3:

  • Espera (TTFB): 374ms
  • Espera (TTFB): 381ms
  • Espera (TTFB): 378ms

Como você pode ver, o servidor um tem TTFB significativamente menor. Em termos de CPU, os servidores 2 e 3 são realmente mais rápidos:

SCRIPT DE REFERÊNCIA PHP

Tempo total do servidor1: : 4,022 seg.

Tempo total do servidor2: : 2,866 seg.

Tempo total do servidor3: : 2,936 seg.

A E/S é praticamente a mesma para todos os servidores. Todos eles têm novos SSDs com controladores RAID de hardware.

Testei a mudança do Redis para uma das VMs para descobrir se a latência extra vem do Redis, mas isso não faz a menor diferença.

Minha suposição é que a latência extra no TTFB vem do MySQL que roda no servidor 1? Executar o MySQL no mesmo servidor produz TTFB significativamente menor, mesmo que a CPU seja mais lenta.

Existe uma solução alternativa para isso?

Na verdade, a pergunta correta é: como posso identificar qual é a causa da latência extra?

informação relacionada