Guia

Como reduzir o lag de um servidor de Minecraft.

O lag tem três causas diferentes que, dentro do jogo, parecem iguais, e cada uma tem a sua solução. Este guia mostra como as distinguir, como medir o que o servidor está a fazer e que alterações vale a pena fazer primeiro.

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

Perguntas frequentes

Lag em servidores de Minecraft: perguntas frequentes

Porque é que o meu servidor de Minecraft tem lag com poucos jogadores?
O número de jogadores raramente é a causa por si só. Os motivos habituais são terreno novo a ser gerado enquanto os jogadores exploram, uma farm grande ou demasiadas entidades no mesmo sítio, um único plugin pesado ou uma view distance acima do que o hardware aguenta. Um profiler como o Spark mostra qual deles é.
Qual é um bom TPS para um servidor de Minecraft?
20 TPS é o objetivo e o máximo. Um servidor que se mantém entre 19 e 20 sente-se fluido. Abaixo de cerca de 18 os jogadores começam a notar atrasos, e abaixo de 15 o jogo fica claramente lento.
Mais RAM resolve o lag do servidor de Minecraft?
Só se o servidor tiver mesmo falta de memória. Quando a RAM é suficiente, acrescentar mais não aumenta a taxa de ticks, porque o limite passa a ser a velocidade do processador numa única thread. Verifica o gráfico de memória no teu painel antes de mudares de plano.
O que significa "Can't keep up! Is the server overloaded?"
Significa que o servidor demorou mais de 50 milissegundos nos seus ticks e ficou atrasado em relação ao tempo real. Uma mensagem ocasional é inofensiva. Se aparece constantemente, o servidor está sobrecarregado e deves usar um profiler para encontrar a causa.
A view distance afeta o desempenho do servidor?
Sim, mais do que quase qualquer outra definição. Cada degrau extra de view distance acrescenta um anel de chunks à volta de cada jogador online que o servidor tem de carregar e enviar. Baixá-la de 12 para 8 muitas vezes faz mais do que uma melhoria de hardware.