한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Guia do Lag em Jogos › L13 Arquitetura e operação de servidores

Sobrecarga de logs e monitoramento Logging / monitoring overhead

ID da causa in-monitoring · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)

Abrir o card interativo, com figuras e simulações →

Quando há uma falha, o volume de logs explode, e servidores que enviam logs de forma síncrona ficam ainda mais lentos por causa deles.

Por quê Os erros fazem explodir o volume de logs e métricas enviados → Efeito O coletor de logs fica para trás, e os servidores que enviam de forma síncrona ficam esperando → Na tela Engasgos e travamentos durante a falha pioram por causa dos logs

Sintomas
Engasgos, Travamento
Fatores
Paralisação
Quem é afetado
Servidor inteiro
Quando
Quando junta muita gente, Aleatoriamente, de vez em quando
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de desenvolvimento)
Envio assíncrono, amostragem, descartar quando o buffer encher, agrupar os logs do mesmo erro antes de enviar.
O que fazer (Equipe de infraestrutura)
Dimensionar o coletor de logs pelo volume de pico durante falhas, alerta de acúmulo no coletor.
No gráfico
Picos aleatórios · Volume de logs enviados, fila do coletor de logs
Onde olhar
Linhas e bytes de log por segundo no servidor, fila e descartes do agente de coleta de logs, junto com o tempo de tick. Se houver thread parada, verificar com bcc offcputime -p se ela espera na escrita ou no envio de logs
Confirma se
No momento do pico de tick, o volume de logs sobe para dezenas de vezes o normal, e o tempo de espera da thread do jogo se concentra nas pilhas de chamada de escrita e envio de logs
Descarta se
Volume de logs normal ou thread do jogo sem espera nos logs: a explosão de logs é só consequência da falha, então procurar à parte a causa do primeiro erro
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. Logging in C# Microsoft
    Os métodos de log do .NET são síncronos, então, se o destino é lento, recomenda-se escrever primeiro em um armazenamento rápido e mover depois
  2. Asynchronous loggers Apache Software Foundation
    O log assíncrono absorve picos curtos com uma fila, mas se a saída continua lenta a fila enche e a velocidade cai à da saída mais lenta, ou os logs são descartados conforme a política (Discard)
  3. Demonstrations of offcputime, the Linux eBPF/bcc version IO Visor
    Soma, por pilha de chamadas, o tempo em que as threads ficaram paradas fora da CPU (off-CPU); -p especifica o processo

Veja também

Mesma camada: L13 Arquitetura e operação de servidores

Mesmo sintoma (Engasgos) em outras camadas

Ver o card interativo, com figuras e simulações