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)
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
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
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
Asynchronous loggersApache 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)