Salto do relógio do sistema (step do NTP) Wall-clock jump (NTP step)
ID da causa so-timejump · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
Quando o relógio do servidor é ajustado alguns segundos para frente ou para trás de uma vez, os timers que dependem do relógio do sistema disparam todos juntos ou ficam parados.
Por quê A sincronização de horário ajusta o relógio de uma vez, com um salto grande → Efeito Timers disparam todos juntos ou ficam parados, e timeouts são avaliados errado → Na tela Buffs e cooldowns errados, desconexão de todos ao mesmo tempo, avanço rápido
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de desenvolvimento)
Calcular tempo decorrido, timeouts e cooldowns com o monotonic clock, que não salta nem volta para trás, usar o wall clock só para exibição e registro.
O que fazer (Equipe de infraestrutura)
Ajustar o relógio aos poucos (makestep do chrony só logo após iniciar), monitorar o estado da sincronização de horário (diferença do relógio).
Números de referência
O ntpd corrige de uma vez quando a diferença passa de 0,128 s. Abaixo disso, ajusta aos poucos, num ritmo que leva pouco mais de 30 minutos para eliminar 1 s de diferença. O chrony, muito usado hoje, na configuração recomendada (makestep) só corrige de uma vez algumas vezes logo após iniciar e depois ajusta aos poucos. O relógio também salta quando uma máquina virtual para por um momento e volta.
No gráfico
Picos aleatórios · Disparos de timer e desconexões, registros de ajuste do relógio
Onde olhar
Procurar nos logs do serviço de sincronização de horário ajustes grandes feitos de uma vez e cruzar com o horário do problema. O chrony registra no syslog os ajustes maiores que o valor de logchange (padrão de 1 s)
Confirma se
Há registro de ajuste do relógio no momento dos buffs e cooldowns errados, da desconexão em massa ou do avanço rápido, e o tamanho do ajuste é parecido com o tamanho do problema
Descarta se
Sem registro de ajuste do relógio: não é esta causa. Em máquina virtual, verificar também se ela parou e voltou (“Manutenção do host na nuvem e live migration”)
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Fontes
ntpd - Network Time Protocol (NTP) daemonNetwork Time Foundation Corrige de uma vez quando a diferença passa do limiar de step de 128 ms e ajusta aos poucos quando é menor; a 0,5 ms por segundo, corrigir 1 s leva 2.000 s (cerca de 33 minutos)
chrony – Frequently Asked Questionschrony Recomenda-se permitir o step só algumas vezes logo após o início, como em makestep 1 3; uma máquina virtual que parou e retomou pode voltar com o horário errado
clock_gettime(2) — Linux manual pageLinux man-pages CLOCK_MONOTONIC não é afetado por saltos descontínuos do relógio do sistema e não anda para trás
chrony.conf(5)chrony logchange: ajustes do relógio maiores que este valor (padrão de 1 s) são registrados no syslog