Primeiro, percebe que tipo de lag é
Os jogadores chamam lag a tudo, mas há três problemas distintos. Lag do servidor significa que o servidor não consegue terminar o seu trabalho a tempo: os blocos reaparecem depois de os partires, os mobs movem-se aos saltos e todos o sentem ao mesmo tempo. Lag de rede significa uma rota lenta ou instável entre um jogador e o servidor: esse jogador anda para trás e para a frente enquanto os outros estão bem. Lag do cliente é uma taxa de fotogramas baixa no computador de uma pessoa e não tem nada a ver com o servidor.
O teste rápido é perguntar quem é afetado. Se todos têm o problema no mesmo momento, olha para o servidor. Se é só um jogador, olha para a ligação ou para o PC dele.
- Todos afetados ao mesmo tempo: lag do servidor, medido em TPS
- Um jogador a andar para trás e para a frente: lag de rede, medido em ping
- Um jogador com a imagem aos soluços: lag do cliente, medido em FPS
Mede antes de mudar seja o que for
Um servidor de Minecraft aponta para 20 ticks por segundo. Cada tick tem um orçamento de 50 milissegundos e, quando o trabalho demora mais do que isso, o servidor atrasa-se. No Paper e no Purpur, o comando tps mostra a taxa de ticks recente e o comando mspt mostra quantos milissegundos cada tick está a demorar.
Para descobrir o que está a gastar o tempo, usa um profiler. O Spark é o mais usado e as versões atuais do Paper já o incluem. Inicia-o durante o lag, deixa-o correr alguns minutos e ele produz um relatório que identifica o plugin, o tipo de entidade ou a zona do mundo responsável. Dez minutos com um profiler substituem dias de palpites.
Baixa a view distance e a simulation distance
Esta é a alavanca mais forte. A view distance controla quantos chunks são enviados a cada jogador e a simulation distance controla até que distância de cada jogador o mundo está ativamente a ser processado. Cada degrau a mais acrescenta um anel de chunks à volta de cada jogador online.
Uma view distance de 8 e uma simulation distance de 5 ou 6 mantêm a maioria dos servidores fluidos e poucos jogadores notam a diferença. As duas definições estão no ficheiro server.properties.
Pré-gera o mundo
Gerar terreno novo é a coisa mais pesada que um servidor faz. Quando os jogadores exploram em direções diferentes, ou voam com elytra, o servidor gera chunks em tempo real e a taxa de ticks cai.
A solução é gerar o mapa com antecedência. Define um limite do mundo e depois usa um plugin de pré-geração, como o Chunky, para o preencher enquanto o servidor está calmo. A partir daí, explorar só carrega chunks do disco, o que é muito mais leve.
Mantém as entidades e as farms sob controlo
Entidades são mobs, animais, itens no chão, minecarts e aldeões. Algumas centenas de vacas num cercado, uma mob farm que nunca para ou milhares de itens no chão podem, cada um, gastar mais tempo de tick do que vinte jogadores.
O relatório do profiler mostra a contagem de entidades por zona, por isso podes encontrar a farm responsável em vez de proibir as farms em geral. Combina com os teus jogadores um limite razoável para os cercados de animais e desliga as farms onde não está ninguém.
Usa Paper em vez de vanilla
Se estás a correr o servidor vanilla e não precisas dele por um motivo específico, mudar para Paper é desempenho gratuito. Corre os mesmos mundos com o interior fortemente otimizado e deixa-te afinar muitas mais definições. O Purpur é construído sobre o Paper e acrescenta ainda mais opções.
Na StormNodes podes mudar o software do servidor a partir do painel. Faz um backup primeiro, como em qualquer alteração desta dimensão.
Revê os teus plugins
Cada plugin recebe uma parte de cada tick. A maioria é leve, mas um único plugin mal escrito ou desatualizado pode gastar mais tempo do que o resto do servidor junto, e o profiler mostra-o pelo nome.
Remove os plugins que já não usas, mantém os restantes atualizados e tem cuidado com tudo o que analise grandes áreas do mundo ou registe cada alteração de bloco.
Reinicia com horário marcado
Um reinício limpa a memória que se foi acumulando ao longo de dias e volta a carregar tudo de forma limpa. Um reinício diário numa hora calma é prática comum em servidores movimentados. Podes configurá-lo como tarefa agendada no painel da StormNodes, com uma mensagem de aviso aos jogadores alguns minutos antes.
Quando o limite é mesmo o hardware
Se a utilização de memória está junto ao topo do gráfico e o servidor pára por um instante de vez em quando, precisa de mais RAM. Se a memória está bem e os ticks continuam lentos depois das alterações acima, o limite é a velocidade do processador, porque o Minecraft faz a maior parte do trabalho numa única thread.
Para o lag de rede, a solução é a distância. Um servidor perto dos teus jogadores tem uma rota mais curta, e é por isso que uma comunidade em Portugal ou Espanha tem melhor ping num servidor em Portugal do que num na Europa central ou nos Estados Unidos.
- Memória junto ao limite com bloqueios periódicos: muda para um plano com mais RAM
- Memória bem, ticks lentos: reduz a carga de trabalho ou muda para hardware mais rápido
- Ping alto para todos: aloja o servidor mais perto de onde vivem os teus jogadores