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

Libro blanco del lag en juegos › Problemas que solo afectan a algunos

Personaje con datos sobredimensionados One character with oversized data (inventory, mail, buffs)

ID de la causa pt-heavy-char · Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de BD (Equipo de infraestructura)

Abrir la ficha interactiva con gráficos y simulaciones →

Un personaje con miles de objetos o correos acumulados, o con listas de amigos o de bloqueados y buffs fuera de lo normal, tiene varias veces más datos que cargar al conectarse, que guardar y que anunciar a su alrededor. Va lento solo con ese personaje, sin importar la conexión.

Por qué Un personaje antiguo o las recompensas de eventos acumulan miles de elementos en el inventario o el buzón → Efecto En cada conexión, cambio de zona o guardado se lee y escribe todo eso en la BD, y la información de equipamiento y buffs que se envía a los de alrededor también es grande → En pantalla Solo ese personaje tiene cargas de entrada largas y tirones al abrir el inventario o el correo. Si el servidor espera el guardado en el hilo del juego, los de alrededor también sufren una pausa breve

Síntomas
No conecta / carga infinita, Input lag, Congelamiento
Factores
Detención
A quién afecta
Solo yo, Solo una función
Cuándo
Al conectar o tras un mantenimiento, Al hacer ciertas acciones, Al moverse o cambiar de zona
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de BD (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Poner límites de almacenamiento al inventario y al correo y limpiar automáticamente los correos antiguos, cargar por partes solo lo necesario, guardar solo lo que cambió y fuera del hilo del juego.
Tareas (Equipo de infraestructura)
Buscar en el log de consultas lentas las consultas lentas que se repiten con el mismo personaje y pasarlas al equipo de desarrollo, entregar la lista de personajes con más filas de objetos y de correo.
Cifras de referencia
Si cada objeto es una fila en la BD, un personaje con 5,000 objetos lee 5,000 filas cada vez que se conecta. Decenas de veces más que un personaje normal.
En el gráfico
Alto solo en algunos · Tiempo de conexión y de guardado por personaje, filas leídas de la BD por personaje
Dónde mirar
Buscar en el log de consultas lentas de la BD (MySQL slow query log, PostgreSQL log_min_duration_statement) las lecturas y guardados lentos que se repiten con el mismo ID de personaje, y sacar la lista de personajes con más filas en las tablas de objetos y de correo
Se confirma si
Las consultas lentas se concentran en unos pocos ID de personaje, esos personajes tienen decenas de veces más filas de objetos y de correo que la media, y van igual de lentos desde otra computadora y otra conexión
Se descarta si
Si otros personajes de la misma cuenta u otros jugadores también van lentos, apunta a los servidores de BD o a los bloqueos. Si ese personaje va bien desde otra computadora, apunta al entorno del jugador
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Para saber más
Si con el mismo personaje va igual de lento desde otra computadora y otra conexión, mientras los demás personajes de la misma cuenta van bien, hay que sospechar de los datos del personaje. Por eso el reporte debe incluir siempre el nombre del personaje.

Fuentes

  1. Extraneous Fetching antipattern Microsoft Azure
    Traer más datos de los necesarios aumenta la carga de E/S y vuelve lentas las respuestas
  2. PostgreSQL Documentation: Error Reporting and Logging PostgreSQL
    log_min_duration_statement: registra las sentencias SQL que tardan más de cierto tiempo, para rastrear consultas lentas
  3. The Slow Query Log MySQL
    Log de consultas lentas que registra las consultas que superan long_query_time

Ver también

Misma capa: Problemas que solo afectan a algunos

Causas de otras capas con el mismo síntoma (No conecta / carga infinita)

Ver la ficha interactiva con gráficos y simulaciones