Libro blanco del lag en juegos › Buscar por síntoma
Cámara lenta: 24 causas y sus responsables
También se dice: el mundo se ralentiza, todo va lento, slow motion
Abrir en la guía de síntomas interactiva →
Todo se mueve despacio. El lanzamiento de habilidades y el movimiento de los monstruos parecen estirados. Según cómo esté diseñado el servidor, también puede verse a velocidad normal pero con tirones o teletransporte.
Todos los que están en la misma zona se ralentizan a la vez. Suele pasar donde se junta mucha gente.
El servidor no termina los ticks a tiempo. La conexión está bien, así que el ping medido fuera del juego no cambia; el ping del juego puede subir un poco si incluye la espera de procesamiento en el servidor. Hay que revisar picos de jugadores, cálculo de visibilidad, broadcast y falta de memoria.
Causas de este síntoma
L1 Proceso del juego en el cliente
- Espiral de recuperación con timestep fijo: Tras una pausa, el juego intenta recuperar de golpe los cálculos atrasados, y esos mismos cálculos lo vuelven a retrasar. (Desarrollo de cliente (Equipo de desarrollo))
L5 Equipos de red del centro de datos
L7 SO del servidor (kernel)
- Exceso de hilos y cambios de contexto: Si se ejecutan muchos más hilos que núcleos, el SO gasta CPU solo en irlos turnando. (Desarrollo de servidor (Equipo de desarrollo))
- Throttling de CPU en contenedores (cuota de CFS): Si un contenedor tiene un límite de CPU, en cuanto agota su cuota dentro del periodo fijado (normalmente 100 ms), se detiene a la fuerza el resto del periodo (throttling). (Infraestructura de servidores (Equipo de infraestructura))
- Picos de latencia por la gestión de energía del servidor (C-states, escalado de frecuencia): Los núcleos de CPU inactivos entran en estados de ahorro de energía profundos (C-states) y bajan su frecuencia para ahorrar electricidad. Cuando llega un paquete o vence un temporizador, despertar y subir la frecuencia lleva tiempo, y eso añade latencia al procesar paquetes pequeños. (Infraestructura de servidores (Equipo de infraestructura))
- Tareas programadas: La compresión de logs, las copias de seguridad y los análisis de seguridad que se ejecutan todos los días a la misma hora ocupan la CPU y el disco. (Infraestructura de servidores (Equipo de infraestructura))
- Cambios de rendimiento tras actualizar el SO, el kernel, los drivers o el firmware: El código del juego no cambia, pero el servidor se vuelve más lento después de actualizar el SO, el kernel, los drivers o el firmware. Las actualizaciones pueden cambiar valores predeterminados, el planificador, las mitigaciones de vulnerabilidades de la CPU (mitigations) o el comportamiento de los drivers. (Infraestructura de servidores (Equipo de infraestructura))
L8 Sockets y protocolos
- Envíos bloqueantes por clientes lentos: Si el búfer de envío de un jugador con una conexión lenta está lleno y se le envía en modo bloqueante (un envío cuya llamada no vuelve hasta que hay espacio en el búfer), el hilo del servidor se queda esperando a ese único jugador. (Desarrollo de servidor (Equipo de desarrollo))
- Modelo de E/S bloqueante: En un modelo en el que el hilo no puede hacer nada más mientras espera a un socket, todo se vuelve más lento a medida que aumentan los jugadores. (Desarrollo de servidor (Equipo de desarrollo))
L9 Proceso del juego en el servidor
- Tick que excede su presupuesto: Si el trabajo de un tick supera su presupuesto, el intervalo de tick del servidor se alarga y toda esa zona va más lenta o va a tirones. (Desarrollo de servidor (Equipo de desarrollo))
- Explosión del cálculo de visibilidad (AOI, N²): Si se compara a todos con todos para saber quién puede ver a quién, cuando el número de jugadores se multiplica por 10, el cálculo se multiplica por 100. (Desarrollo de servidor (Equipo de desarrollo))
- Sobrecarga de una zona de un solo hilo (hotspot): En un diseño con un hilo por zona, si la gente se concentra en un lugar, solo ese núcleo llega al 100%. (Desarrollo de servidor (Equipo de desarrollo))
- Avalancha de pathfinding: Si cientos de monstruos persiguen a la vez a los jugadores calculando rutas, se consume mucha CPU. (Desarrollo de servidor (Equipo de desarrollo))
- Combate concentrado en un solo objetivo (world boss): Cuando cientos de jugadores golpean a la vez a un mismo jefe, el cálculo de ese único jefe se concentra en un punto y la información de cada golpe se envía a todos los que lo ven. (Desarrollo de servidor (Equipo de desarrollo))
- Acumulación de entidades (objetos e invocaciones sin limpiar): Si los objetos tirados en el suelo, las invocaciones y los temporizadores terminados que deberían desaparecer no se limpian y se acumulan, el trabajo de cada tick crece cuanto más tiempo lleva encendido el servidor. (Desarrollo de servidor (Equipo de desarrollo))
L10 Memoria
- Fuga de memoria: La memoria que no se libera se acumula poco a poco y, al cabo de unos días, termina en un GC excesivo, swap o un cierre forzado. (Desarrollo de servidor (Equipo de desarrollo))
- Thrashing del GC (heap casi lleno): Cuando los datos vivos se acercan al límite del heap, el GC casi no encuentra nada que liberar y se repite sin parar. (Desarrollo de servidor (Equipo de desarrollo))
- Swap: Cuando falta memoria y el SO envía una parte al disco, cada vez que se usa esa memoria hay que esperar a un disco más de 1,000 veces más lento. (Infraestructura de servidores (Equipo de infraestructura))
- Fallo de caché: Si los datos están dispersos por la memoria, la CPU tiene que ir cada vez hasta la RAM, que es lenta, y esperar. (Desarrollo de servidor (Equipo de desarrollo))
- Fragmentación de memoria: Si al asignar y liberar memoria una y otra vez el espacio libre queda partido en trozos pequeños, el proceso ocupa mucha más memoria de la que realmente usa. (Desarrollo de servidor (Equipo de desarrollo))
- Acceso a memoria NUMA remota: En un servidor con dos CPU, el acceso a memoria se vuelve más lento cuando un hilo usa la memoria conectada a la otra CPU. (Infraestructura de servidores (Equipo de infraestructura))
L11 Disco
- Agotamiento de los créditos de ráfaga del disco en la nube: Algunos discos en la nube y las instancias pequeñas tienen créditos de ráfaga para rendir por encima de su nivel base durante un rato; si la actividad intensa se alarga y los créditos se agotan, la velocidad cae de golpe. (Infraestructura de servidores (Equipo de infraestructura))
L13 Arquitectura y operación de servidores
- Retraso del autoescalado: Cuando se junta mucha gente, se añaden servidores automáticamente, pero prepararlos lleva unos minutos y mientras tanto los servidores existentes van sobrecargados. (Infraestructura de servidores (Equipo de infraestructura))
- Exceso de macros y bots: Los bots envían solicitudes con mucha más frecuencia que una persona y acaparan la capacidad de procesamiento del servidor. (Desarrollo de servidor (Equipo de desarrollo))
Ver la guía de síntomas interactiva