Por que meu servidor da região central dos EUA está com dificuldades (CPU máxima) por trás do meu balanceador de carga do Google Cloud?

Por que meu servidor da região central dos EUA está com dificuldades (CPU máxima) por trás do meu balanceador de carga do Google Cloud?

Tenho um ambiente com balanceamento de carga configurado no Google Cloud Platform. Atrás do balanceador de carga estão dois servidores, que são quase idênticos em configuração. Um servidor fica na região leste dos EUA e outro na região central dos EUA. O servidor na região leste dos EUA lida facilmente com toda a carga sozinho, com média de uso de CPU de cerca de 45%. Sempre que adiciono o servidor na região central ao balanceador de carga, sua CPU aumenta repentinamente e permanece em torno de 99% de uso enquanto estiver conectado ao balanceador de carga.

Informações adicionais: Os servidores são servidores Windows executando um site ASP.NET Umbraco 7. Também tenho dois servidores de banco de dados executando o MariaDB, um mestre e outro escravo de replicação. O servidor leste se conecta ao mestre (também na região leste). O servidor central se conecta ao escravo (também na região central).

Alguém pode explicar por que o servidor central está com dificuldades?

Coisas que tentei:

  • Ajustei os parâmetros de balanceamento para tentar fazer com que mais solicitações fossem para o servidor oriental, pensando que isso poderia aliviar um pouco o estresse no servidor central.
  • Tentei conectar o servidor central ao banco de dados mestre na região leste.
  • Carreguei uma nova cópia dos arquivos do site, caso houvesse alguma corrupção em algum lugar causando algum problema.
  • Segui o conselho (automatizado) do Google e aumentei a RAM (que não foi muito estressada para começar; nunca passou de 50% de uso).
  • Tentei montar um servidor totalmente novo, também na região central, configurando do zero. Os mesmos problemas de desempenho.

O melhor que posso imaginar no momento é que o servidor tem dificuldade em acompanhar os pings do Health Checker, mas por que o outro servidor não tem dificuldade? Há algo em estar em uma região diferente que está causando o problema?

Coisas que ainda não experimentei. Sinta-se à vontade para sugerir uma prioridade sobre estes:

  • Movendo o servidor central para outra região.
  • Movendo o servidor central para a região leste ao lado do outro servidor.
  • Adicionando uma CPU

Estou tentando evitar o último porque parece tratar os sintomas em vez de encontrar o problema subjacente.

Responder1

Para começar, os balanceadores de carga L7 do Google tentarão rotear o tráfego para o back-end mais próximo do solicitante. No seu caso, qualquer solicitação vinda da costa leste irá para o backend US-East, enquanto todas as outras solicitações da América do Norte irão para o US-Central. Este é o comportamento esperado.

Você pode verificar a distribuição do tráfego L7LB acessando Management Console > Network services > Load Balancing e clicando em "menu avançado". A partir daqui, vá para "Serviços de back-end" e clique no back-end do seu LB. Agora você pode visualizar o RPS por instância no back-end. Se você estiver usando 2 back-ends separados, poderá verificar cada um individualmente.

Se o servidor central dos EUA tiver um volume muito maior, o uso da CPU será maior.

No que diz respeito às verificações de saúde, você tem controle total sobre a frequência das verificações (idealmente, deve corresponder à do servidor us-east). Você pode revisar suas verificações de integridade em Compute Engine > Verificações de integridade ou na tela de detalhes do balanceador de carga.

Você sempre pode aumentar a CPU sem aumentar a memória, pois esse é o seu problema no momento. No entanto, isso aborda apenas o sintoma e não o problema.

O texto acima aborda o que procurar no lado do Google Cloud Platform. Se o tráfego para ambas as instâncias for equivalente, comece a monitorar o desempenho do seu servidor para verificar o que está maximizando o uso da CPU para ter certeza de que é de fato o IIS e não outro aplicativo.

informação relacionada