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

Libro blanco del lag en juegos › L12 Base de datos

Caché fría (justo después de reiniciar) Cold buffer pool after restart

ID de la causa db-cold-cache · Responsable principal Infraestructura de BD (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Al reiniciar la BD, su caché en memoria está vacía, y durante un tiempo todas las consultas leen del disco.

Por qué La BD se reinicia por un mantenimiento → Efecto Los datos que se usaban a menudo ya no están en memoria y se leen del disco → En pantalla Justo después del mantenimiento, el inicio de sesión y las cargas van lentos durante un rato

Síntomas
No conecta / carga infinita, Input lag
Factores
Latencia
A quién afecta
Todo el servidor
Cuándo
Al conectar o tras un mantenimiento
Responsable
Responsable principal Infraestructura de BD (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Abrir de forma gradual (aumentar por etapas el número de jugadores que inician sesión con una cola de inicio de sesión).
Tareas (Equipo de infraestructura)
Precalentar la caché tras el reinicio (warm-up; revisar la configuración de guardado y restauración del buffer pool) y, en las BD restauradas desde una instantánea, leer también el disco por adelantado.
En el gráfico
Avalancha tras la apertura · Lecturas de disco, tasa de aciertos de la caché de búferes
Dónde mirar
En MySQL, la proporción entre Innodb_buffer_pool_reads (lecturas que no estaban en el buffer pool y se hicieron desde disco) e Innodb_buffer_pool_read_requests, y el progreso del precalentamiento en Innodb_buffer_pool_load_status. En PostgreSQL, blks_read y blks_hit de pg_stat_database. Revisar también las lecturas de disco del servidor de BD
Se confirma si
Justo después del reinicio, las lecturas de disco se disparan y la tasa de aciertos cae; luego ambas se normalizan con el tiempo, y durante ese intervalo el inicio de sesión y las cargas van lentos
Se descarta si
Si la tasa de aciertos es la normal pero va lento justo después del mantenimiento, apunta a una avalancha de inicios de sesión y consultas N+1 (db-login-storm) o al pool de conexiones (db-pool)
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Para saber más
MySQL guarda la lista de páginas del buffer pool al apagarse y vuelve a cargarlas en segundo plano al arrancar, pero llenarlo del todo lleva tiempo. Si en la nube la BD se restauró desde una instantánea (copia del disco), el propio disco también va lento con cada bloque que se lee por primera vez, y el efecto dura más.
Casos reales
Roblox 2021: Caída de 73 horas en Roblox: contención en el clúster de descubrimiento de servicios (Consul)

Fuentes

  1. Saving and Restoring the Buffer Pool State MySQL
    Para acortar el precalentamiento tras un reinicio, al apagarse guarda la lista de páginas usadas recientemente (25% por defecto) y al arrancar las vuelve a leer; ambas opciones están activadas por defecto
  2. pg_prewarm — preload relation data into buffer caches PostgreSQL
    Guarda periódicamente el contenido de los búferes compartidos y lo vuelve a cargar tras el reinicio (autoprewarm)
  3. Initialize Amazon EBS volumes AWS
    Los volúmenes creados desde una instantánea tienen más latencia y menos rendimiento hasta que se descargan todos los bloques
  4. Server Status Variables MySQL
    Innodb_buffer_pool_reads (lecturas lógicas que no estaban en el buffer pool y se leyeron directamente del disco), Innodb_buffer_pool_read_requests, Innodb_buffer_pool_load_status (progreso del precalentamiento)
  5. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    blks_read (bloques leídos del disco) y blks_hit (bloques encontrados en la caché de búferes) de pg_stat_database

Ver también

Misma capa: L12 Base de datos

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

Ver la ficha interactiva con gráficos y simulaciones