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)
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
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
ionice(1) — Linux manual pageutil-linux Tarefas na classe idle só recebem tempo de disco quando nenhum outro programa está usando o disco
sar(1) — Linux manual pagesysstat -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