Medindo o desempenho do servidor: CPU, RAM e ticks
Otimizar sem medir é chutar. Antes de reescrever sistemas ou trocar de plano, descubra onde está o gargalo.
Tick rate
O servidor processa o jogo em ciclos (ticks). Se o gamemode demora demais em algum ponto, o servidor faz menos ciclos por segundo e o jogo fica menos responsivo.
- Use
GetServerTickRate()para acompanhar a taxa de ticks; - Registre o valor periodicamente (por exemplo, a cada minuto) junto com o número de jogadores;
- Quedas bruscas em horários específicos indicam algum sistema pesado rodando naquele momento.
Consulte a documentação da sua versão sobre a configuração de sleep e tick rate no config.json.
Tempo de funções
Meça o tempo de trechos suspeitos com GetTickCount():
new inicio = GetTickCount();
CarregarTodasAsCasas();
printf("[PERF] CarregarTodasAsCasas: %d ms", GetTickCount() - inicio);
Para funções chamadas com muita frequência, acumule o tempo total e o número de chamadas e imprima a média periodicamente.
Profilers
Existem ferramentas de profiling da comunidade para Pawn que mostram quanto tempo cada função consome. São muito úteis em gamemodes grandes. Verifique a compatibilidade com o open.mp e use no servidor de testes, pois o profiling também consome recursos.
CPU e memória
No painel de hospedagem:
- CPU: observe os picos, não só a média. Picos coincidem com eventos, salvamentos e horários cheios;
- Memória: deve estabilizar depois da inicialização. Se cresce sem parar, há vazamento (objetos, textdraws ou timers criados e nunca destruídos, dados em cache sem limite).
Banco de dados
- Ative o log de consultas lentas do MySQL (se tiver acesso) ou registre consultas demoradas no callback do plugin;
- Crie índices para as consultas mais frequentes.
Monte uma rotina
- Registre ticks, jogadores, CPU e memória;
- Compare antes e depois de cada mudança importante;
- Guarde o histórico para ver tendências.
Hospede seu servidor com a VittHost
Nos planos OPENMP-BR da VittHost, você acompanha CPU, memória e disco em tempo real no painel Pterodactyl. Servidores no Brasil, proteção DDoS, MySQL incluso, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.