spark é o profiler para servidores Minecraft. Quando o servidor dá travadas, o spark te diz em segundos se a taxa de ticks está sofrendo, quais plugins ou farms estão consumindo tempo e se a CPU ou a memória chegou ao limite. Este guia mostra os três comandos de que tu realmente precisas e como ler os números. As capturas de tela vêm de um servidor de teste com Paper 1.21.4.
Instalação
spark roda como plugin no Paper e no Spigot e como mod no Fabric, NeoForge e Forge. No painel, tu o encontras em Plugins → Browser. Ele não precisa de configuração. Os comandos pertencem ao grupo de moderação; o nó para isso se chama spark. Como atribuí-lo está em LuckPerms: configurar permissões.
Primeiro olhar: TPS e duração dos ticks
/spark tps mostra três linhas:

- TPS (ticks por segundo) nos últimos 5 segundos, 10 segundos, 1, 5 e 15 minutos. 20,0 é o máximo. A partir de cerca de 19, os jogadores ainda não percebem nada; abaixo de 15, animais se movem aos solavancos; abaixo de 10, o servidor fica injogável.
- Duração dos ticks como mínimo, mediana, percentil 95 e máximo em milissegundos. Um tick pode durar 50 ms para manter 20 TPS. Na imagem, a mediana está em 2,4 ms; portanto, o servidor tem bastante folga. O decisivo é o percentil 95: se ele estiver perto de 50 ms, haverá travadas, mesmo que a média pareça boa.
- Uso de CPU separado por sistema (a máquina inteira) e processo (apenas o teu servidor). Em um servidor alugado, o valor do processo é o importante.
/spark healthreport resume os mesmos valores com memória e disco em um relatório.
O profiler: quem está consumindo tempo?
Quando o TPS cai, inicia o profiler:
/spark profiler start
spark confirma o início e continua rodando em segundo plano. Deixa-o rodar por pelo menos um minuto enquanto o problema acontece, depois:
/spark profiler stop

Ao parar, o spark envia o relatório para spark.lucko.me e gera um link. O relatório não contém nomes de jogadores, endereços IP nem mensagens de chat, mas sim árvores de chamadas do processo Java. /spark profiler open abre o relatório ainda durante a execução, e /spark profiler cancel o descarta sem upload.
No relatório, expande a árvore de cima para baixo. O que tu normalmente encontras:
- Ticks de entidades de um tipo específico: uma farm com centenas de animais ou itens. Reduz a farm ou acalma-a com
entity-activation-rangeempaper-world-defaults.yml. - Um plugin em um event listener: atualiza o plugin, verifica a configuração ou substitui-o.
- Carregamento de chunks por jogadores que voam rápido: reduz a distância de visão ou pré-gera o mundo com Chunky.
- Relógios de redstone: um circuito que nunca para. Pede ao jogador para desligá-lo.
Garbage Collection e memória
/spark gc mostra com que frequência e por quanto tempo a limpeza de memória do Java pausa. Muitas pausas longas significam pouca RAM ou vazamento de memória em um plugin. /spark heapsummary lista quais tipos de objetos ocupam a memória. Antes de contratar mais RAM, vale olhar aqui: muitas vezes uma atualização de plugin resolve o problema.
Erros típicos
- TPS 20, mas ainda há lag. O problema está no cliente ou na rede.
/spark pingmostra a latência por jogador. - Esqueceste o link do profiler.
/spark profilersem argumentos mostra o status; depois de parar, o link também aparece no console do servidor. - Números sem comparação. Um valor de TPS sozinho diz pouco. Mede uma vez com o servidor vazio como referência.
FAQ
A partir de qual valor de TPS os jogadores percebem algo?
Até cerca de 19 TPS, nada chama atenção. Abaixo de 15, animais e projéteis se movem aos solavancos; abaixo de 10, o servidor fica injogável. Presta menos atenção à média e mais ao percentil 95 da duração dos ticks: se ele estiver perto de 50 ms, há travadas, mesmo que a média de TPS pareça boa.
Um relatório do spark contém dados pessoais dos meus jogadores?
Não. O relatório consiste em árvores de chamadas do processo Java e não contém nomes de jogadores, endereços IP nem mensagens de chat. Se mesmo assim não quiseres enviar nada, descarta a execução com /spark profiler cancel ou lê o relatório diretamente no jogo com /spark profiler open.
Por quanto tempo o profiler deve rodar?
Pelo menos um minuto, e justamente enquanto o problema realmente acontece. Uma execução em um servidor tranquilo só mostra que está tudo bem. Em travadas esporádicas, deixa-o rodar por mais tempo e para-o logo depois de uma falha.
Mais RAM ajuda contra lag?
Só se a limpeza de memória for a causa. /spark gc mostra frequência e duração das pausas do Java, e /spark heapsummary mostra os tipos de objetos que ocupam memória. Muitas vezes há um único plugin por trás, e uma atualização resolve o problema de forma mais barata do que mais RAM.
O TPS está em 20 e mesmo assim há travadas — e agora?
Então o problema não está no tick do servidor, mas no cliente ou na rede. /spark ping mostra a latência por jogador. Se afetar só jogadores específicos, a conexão deles é a causa; se afetar todos, verifica a distância de visão e a taxa de quadros no cliente.
Guias complementares
Gerar um mundo antecipadamente tira do servidor o trabalho de carregar chunks: Chunky: pré-gerar o mundo. Como o painel informa TPS baixo de forma contínua está descrito em Lag no servidor Minecraft: TPS e Watchdog.
Fontes
- Documentação do spark: https://spark.lucko.me/docs/
- Comandos: https://spark.lucko.me/docs/Command-Usage
- Ler relatórios do profiler: https://spark.lucko.me/docs/guides/Finding-lag-spikes