Sobrecarga por logs y monitoreo Logging / monitoring overhead
ID de la causa in-monitoring · Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)
Cuando hay un incidente, los logs se disparan, y los servidores que envían sus logs de forma síncrona se vuelven todavía más lentos por culpa de esos logs.
Por qué Al aparecer errores, se dispara el volumen de logs y métricas enviados → Efecto El recolector de logs se atrasa y los servidores que envían de forma síncrona se quedan esperando → En pantalla Durante el incidente, los tirones y congelamientos empeoran por culpa de los logs
Cuando se junta mucha gente, De vez en cuando, al azar
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Enviar de forma asíncrona, usar muestreo, descartar cuando se llene el búfer, agrupar los logs del mismo error antes de enviarlos.
Tareas (Equipo de infraestructura)
Dimensionar el recolector de logs para el volumen pico de un incidente, poner alertas de acumulación en el recolector.
En el gráfico
Picos aleatorios · Volumen de logs enviados, cola del recolector de logs
Dónde mirar
Líneas y bytes de log por segundo del servidor, cola y descartes del agente recolector de logs, junto con el tiempo de tick. Si hay hilos detenidos, ver con bcc offcputime -p si esperan al escribir o enviar logs
Se confirma si
Cuando el tick se dispara, el volumen de logs sube a decenas de veces lo normal, y el tiempo de espera del hilo del juego se concentra en las pilas de llamadas de escritura o envío de logs
Se descarta si
Si el volumen de logs es el normal o el hilo del juego no espera en los logs, la avalancha de logs es solo una consecuencia del incidente; buscar aparte la causa del primer error
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Fuentes
Logging in C#Microsoft Los métodos de log de .NET son síncronos, así que si el almacenamiento es lento se recomienda escribir primero en uno rápido y moverlos después
Asynchronous loggersApache Software Foundation El logging asíncrono absorbe las ráfagas cortas con una cola, pero si la salida sigue lenta, la cola se llena y todo baja a la velocidad de la salida más lenta, o se descartan logs según la política (Discard)