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

Libro blanco del lag en juegos › L9 Proceso del juego en el servidor

Acumulación en la cola de mensajes Mailbox / job queue backlog

ID de la causa sp-queue · Responsable principal Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si las solicitudes llegan más rápido de lo que se procesan y se acumulan en la cola, las últimas se procesan varios segundos después o se descartan.

Por qué Las solicitudes llegan más rápido de lo que se procesan → Efecto La cola se alarga y, al superar el límite, se descarta lo que sobra → En pantalla Habilidades e intercambios que responden tarde o se pierden

Síntomas
Input lag, Acción perdida / rollback
Factores
Latencia, Pérdida de paquetes
A quién afecta
Una zona o un canal, Solo una función
Cuándo
Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Monitorear la longitud de la cola, aplicar una política que descarte primero las solicitudes viejas, paralelizar el procesamiento.
En el gráfico
Topa con el límite · Longitud de la cola y antigüedad del mensaje más viejo, procesados por segundo
Dónde mirar
Longitud de cada cola, antigüedad del mensaje más viejo, y entradas, procesados y descartes por segundo que registra el servidor. Sin métricas en el código, Recv-Q del socket del juego con ss (o netstat), es decir, lo que el kernel ya recibió y el proceso aún no ha leído
Se confirma si
Mientras entra más de lo que se procesa, el número de procesados se estanca en un valor y no dejan de crecer la longitud y la antigüedad de la cola ni los descartes
Se descarta si
Si la cola es corta y la antigüedad baja pero la respuesta tarda, apunta a la latencia de la conexión o al retraso del propio tick
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Casos reales
CCP Games 2014: Sobrecarga del servidor en la gran batalla de flotas de HED-GP en EVE Online

Fuentes

  1. Avoiding insurmountable queue backlogs AWS
    Amazon Builders' Library. Vigilar la acumulación por la antigüedad de los mensajes en espera; en sistemas en tiempo real, procesar primero los datos nuevos (cerca de LIFO) y, a veces, descartar los mensajes viejos
  2. Site Reliability Engineering, Chapter 22: Addressing Cascading Failures Google
    Si las solicitudes llegan más rápido de lo que se procesan, la cola se llena y aumenta la latencia; con LIFO o CoDel (frente al FIFO habitual) se quitan las solicitudes viejas que ya no sirven
  3. ss(8) — Linux manual page iproute2
    Herramienta que muestra estadísticas de sockets (información parecida a la de netstat); -p muestra el proceso que usa cada socket
  4. netstat(8) — Linux manual page net-tools
    Recv-Q: en un socket conectado, bytes que el programa de usuario aún no ha recogido

Ver también

Misma capa: L9 Proceso del juego en el servidor

Causas de otras capas con el mismo síntoma (Input lag)

Ver la ficha interactiva con gráficos y simulaciones