OTServer com lag: como saber se é script, banco ou hardware
O reflexo é sempre o mesmo: o servidor engasga no horário de pico, alguém diz que a hospedagem é ruim, e o dono troca de plano. Semanas depois o lag volta, porque o problema nunca foi a máquina.
Este é o roteiro que eu sigo antes de mexer em qualquer coisa.
Passo 1: veja se a máquina está no limite
Conecte por SSH enquanto o lag está acontecendo e rode top. Olhe o processo do
servidor. Três leituras possíveis:
CPU perto de 100% em um núcleo só, com os outros ociosos. É o cenário mais comum e não significa máquina fraca. A engine é single-thread na parte pesada, então um núcleo saturado quase sempre indica script em loop. Trocar por máquina com mais núcleos não resolve nada.
Memória no limite, com swap sendo usado. Aí sim é hardware — ou vazamento de memória em script. Se o consumo cresce sem parar durante o dia e cai ao reiniciar, é vazamento.
CPU e memória tranquilos, mas o jogo travando. O gargalo está no banco ou no disco.
Passo 2: procure o script culpado
O suspeito número um é getSpectators rodando em loop ou com raio grande. Ele varre
o mapa em volta, e quanto mais jogador e criatura na área, mais caro fica. Um
getSpectators dentro de um onThink de raio amplo derruba servidor cheio
sozinho.
O que revisar, em ordem:
- Globalevents com intervalo curto. Um evento a cada 100ms que faz varredura custa muito mais do que parece.
- Raids e eventos. Se o lag bate sempre no mesmo horário, cruze com o calendário de raid.
- Spells de área em war. Se só engasga durante war, olhe as spells de área e a quantidade de criatura invocada.
- Movements em piso muito usado. Script pesado no piso do templo ou do depot roda milhares de vezes por hora.
Um teste que economiza horas: desative temporariamente os scripts customizados e observe. Se o lag some, é script — e aí é ir religando por partes até achar.
Passo 3: olhe o banco de dados
Ative o log de query lenta no MySQL e deixe rodar durante o pico. Se aparecer query demorando segundos, achou o problema. As causas mais comuns:
- Falta de índice em tabela que cresceu.
player_deaths,player_itemseplayer_storageincham rápido. - Highscore consultando ao vivo a cada acesso ao site. Em servidor cheio isso trava o banco justamente no horário de pico. Resolve com cache.
- Save de jogador em massa. Se o servidor salva tudo de uma vez, você vê um pico periódico. Dá para distribuir.
Passo 4: só então questione a hospedagem
Depois de descartar script e banco, aí sim vale olhar a infraestrutura:
- Disco lento. Banco em disco mecânico ou storage de rede causa lag que parece de script.
- Vizinho barulhento. Em VPS muito compartilhada o desempenho oscila. Se o
topmostrastealalto, é isso. - Rota de rede ruim. Se o lag é só para jogador de uma região, teste
mtra partir dali. - CPU de clock baixo. Se um núcleo satura mesmo depois de otimizar script, você precisa de frequência maior — não de mais núcleos.
O resumo honesto
Na maior parte dos casos que eu vejo, o lag é script. Depois banco. Hardware é minoria, e mesmo assim quase sempre por clock baixo ou disco lento.
Por isso trocar de plano sem diagnosticar raramente resolve: você leva o script problemático junto para a máquina nova.
Hospedagem especializada em OTServer
Anti-DDoS L3/L4/L7, CPU de alta frequência e suporte de quem roda servidor todo dia. De R$ 89 a R$ 370, entrega no mesmo dia e sem fidelidade.
Ver os planos