Quando um bug impede um tick de terminar, o servidor para e o watchdog o reinicia à força.
Por quê Uma condição errada faz um loop nunca terminar, ou uma recursão sai do controle → Efeito O tick não termina e o servidor para → Na tela Travamento e depois desconexão de todos
Ao fazer ações específicas, Aleatoriamente, de vez em quando
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Limitar o número de iterações, ter um watchdog, testar reproduzindo a entrada problemática.
No gráfico
Queda de conexões em massa · Conexões, CPU por thread
Onde olhar
Durante a parada, ver a CPU por thread com pidstat -t 1 e conferir com perf top -t (ID da thread) ou com gdb em que função a thread a 100% está rodando. Se o processo já reiniciou, procurar registros de estouro do tempo do watchdog (WatchdogSec do systemd, falha da liveness probe do Kubernetes)
Confirma se
Enquanto o servidor está parado, uma thread do jogo fica colada em 100% de CPU, e a pilha continua girando dentro da mesma função ou do mesmo loop
Descarta se
CPU perto de 0 durante a parada: aponta para deadlock ou espera de resposta externa
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Fontes
systemd.service(5) — Linux manual pagesystemd WatchdogSec=: se o serviço não envia o sinal de vida (WATCHDOG=1) dentro do tempo definido, é considerado em falha e encerrado, com reinício automático conforme a configuração Restart=
Liveness, Readiness, and Startup ProbesKubernetes A liveness probe detecta um estado em que o processo roda, mas não avança, e reinicia; por padrão, verifica a cada 10 s e reinicia após 3 falhas seguidas