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

Guia do Lag em Jogos › L11 Disco

Backup, compressão e varreduras Backup / compression / scans

ID da causa dk-backup · Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura)

Abrir o card interativo, com figuras e simulações →

Quando backups de madrugada, compressão de logs e varreduras de segurança monopolizam o disco, as leituras e escritas do servidor do jogo ficam na fila.

Por quê Começa um job agendado de backup ou compressão → Efeito O job ocupa a maior parte da largura de banda e do IOPS do disco → Na tela Lag todo dia no mesmo horário

Sintomas
Engasgos, Input lag
Fatores
Paralisação, Latência
Quem é afetado
Servidor inteiro
Quando
Em intervalos regulares
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura)
O que fazer (Equipe de infraestrutura)
Servidores/SO: baixar a prioridade de I/O dos jobs de backup, compressão e varredura, espalhar os horários. Servidores de BD: fazer o backup a partir de uma réplica.
No gráfico
Picos em intervalos regulares · Utilização do disco, tempo de espera do disco
Onde olhar
Com sar -d, sobrepor por data o %util, o await e o aqu-sz dos últimos dias (arquivos diários em /var/log/sa; o sadc precisa coletar também os dados de disco com -S DISK) e, nesse horário, achar com pidstat -d 1 o processo com maior kB_rd/s e kB_wr/s e comparar com a agenda do cron e dos timers do systemd
Confirma se
Todo dia no mesmo horário, await e %util disparam, e nesse momento um processo de backup, compressão ou varredura responde pela maior parte das leituras e escritas do disco
Descarta se
Picos em horários diferentes a cada dia: pouco provável que seja job agendado. Nesse horário, a maior parte do I/O é do próprio servidor do jogo: salvamentos e logs (dk-fsync, dk-sync-log)
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. ionice(1) — Linux manual page util-linux
    Tarefas na classe idle só recebem tempo de disco quando nenhum outro programa está usando o disco
  2. Using Replication for Backups MySQL
    Parar uma réplica para fazer backup não afeta a operação do BD primário
  3. sar(1) — Linux manual page sysstat
    -d: await, aqu-sz e %util por dispositivo nos arquivos diários (padrão /var/log/sa); os dados de disco precisam ser coletados com a opção -S DISK do sadc
  4. pidstat(1) — Linux manual page sysstat
    -d: kB_rd/s e kB_wr/s por processo (volume lido e gravado no disco por segundo)

Veja também

Mesma camada: L11 Disco

Mesmo sintoma (Engasgos) em outras camadas

Ver o card interativo, com figuras e simulações