Minecraft.How
Carregando...
Pular para o conteúdo
Interface do profiler Spark mostrando o uso da CPU e a análise de threads de um servidor Minecraft

Spark: O profiler que seu servidor Minecraft precisa

Alex Maftei
Alex Maftei
@ice
Atualizado
124 visualizações
TL;DR:Spark é um profiler de desempenho leve para servidores, clientes e proxies de Minecraft que diagnostica lag, uso da CPU e problemas de memória em segundos. Instale o plugin, execute uma análise rápida e descubra exatamente o que está deixando seu jogo lento.
🐙 Projeto Minecraft de código aberto

lucko/spark

Um profiler de desempenho para clientes, servidores e proxies de Minecraft.

⭐ 1.269 estrelas💻 Java📜 GPL-3.0
Ver no GitHub ↗

Se o seu servidor Minecraft está com lag e você não faz ideia do motivo, está tentando resolver o problema às cegas. Pode ser a CPU, a memória ou algum plugin sobrecarregando o sistema em segundo plano. Spark elimina as suposições com dados de análise em tempo real que mostram exatamente onde estão os problemas de desempenho.

O que o Spark faz, em termos simples

Spark é um profiler de desempenho que funciona em clientes, servidores e proxies de Minecraft. É como abrir o capô de um carro para descobrir quais peças estão falhando. Em vez de tentar adivinhar por que seu servidor cai para 10 TPS, você executa o Spark, espera 30 segundos e recebe uma análise detalhada do que está consumindo seus recursos.

A ferramenta tem três recursos principais:

  • Análise da CPU - mostra quais threads e caminhos de código estão consumindo o tempo do processador
  • Inspeção da memória - permite verificar o uso do heap, criar snapshots e monitorar a coleta de lixo
  • Métricas de integridade do servidor - acompanha TPS, duração dos ticks, uso da CPU, memória e espaço em disco em um só lugar

Não é preciso configurar nada para usá-lo. Adicione o mod ou plugin, digite um comando e comece a coletar dados.


Por que usar o Spark

Existem algumas situações em que o Spark se torna indispensável.

Primeira: seu servidor começa a perder desempenho sem nenhuma causa aparente. Você desativou os plugins um por um, limpou os caches de chunks e reiniciou o servidor. Mesmo assim, o lag continua. Em 30 segundos, Spark mostra que o processamento de ItemStack é o gargalo ou que uma tarefa assíncrona de determinado plugin está bloqueando a thread principal. Chega de palpites.

Segunda: você administra um servidor maior e quer agir de forma preventiva. É possível deixar o Spark monitorando em segundo plano, verificando as métricas a cada poucos minutos. Assim, ele avisa quando algo dá errado antes que os jogadores percebam.

Terceira: você está enfrentando um problema de desempenho no cliente. Talvez sua máquina caia para 30 FPS em determinadas áreas. Spark no cliente mostra se o culpado é o custo da renderização, o processamento de entidades ou o carregamento do mundo.

E, se você trabalha com redes de servidores ou proxies Bungeecord, Spark também oferece suporte a eles.


Como instalar o Spark

A instalação depende da sua configuração.

Cartão do projeto lucko/spark no GitHub
Cartão do projeto lucko/spark no GitHub

Para servidores Paper/Spigot:

bash
1. Baixe o plugin em spark.lucko.me/download
2. Coloque o arquivo JAR na pasta plugins/
3. Reinicie o servidor
4. Pronto

O plugin registra os comandos automaticamente. Não há arquivo de configuração para editar nem dependências para administrar.

Para clientes Fabric/Forge:

bash
1. Baixe a versão para Fabric/Forge na página de downloads
2. Mova o arquivo para a pasta mods/
3. Inicie o jogo
4. Use os comandos /spark dentro do jogo ou no chat

Para proxies Bungeecord ou Velocity:

bash
1. Coloque o arquivo JAR na pasta de plugins do proxy
2. Reinicie o proxy
3. Spark estará pronto para analisar o tráfego da sua rede

É só isso. Se você já instalou outros plugins, provavelmente já fez coisas mais difíceis do que configurar o Spark.


Principais recursos que fazem a diferença

O profiler de CPU é por onde a maioria das pessoas começa. Execute `/spark profiler start`, use o servidor normalmente por 30 segundos a 2 minutos e depois execute `/spark profiler stop`. Spark gera um link para um visualizador interativo com uma árvore de chamadas. Você pode descobrir que 40% do tempo da CPU está sendo usado na busca de caminhos da EntityAI ou que 25% está no recálculo da iluminação. A árvore é fácil de ler, e você pode aplicar mapeamentos de desofuscação se quiser investigar o funcionamento interno do Minecraft.

O que diferencia o Spark de outros profilers é que ele é leve o bastante para ser executado em servidores de produção sem prejudicar o desempenho e entrega resultados em segundos, em vez de exigir minutos ou horas de análise.

A inspeção da memória está disponível em três formatos. O resumo do heap oferece uma visão rápida das classes que ocupam mais memória, como entidades de bloco, objetos de entidades ou dados de chunks. O heap dump cria um snapshot completo da JVM que pode ser analisado com ferramentas convencionais, como Eclipse MAT ou JProfiler, caso você realmente precise investigar a fundo. O monitoramento do GC mostra quando a coleta de lixo é executada, quanto tempo demora e quanta memória é liberada, o que ajuda a ajustar os parâmetros de inicialização da JVM.

Na maioria das vezes, você não precisa de heap dumps. A visualização resumida responde a 80% das dúvidas sobre memória.

Os relatórios de integridade são a parte menos empolgante, mas muito útil. `/spark tps` oferece uma medição dos ticks mais precisa do que o comando padrão `/tps`. Você pode ver as durações mínima, máxima e média dos ticks, o que revela se o lag é constante, indicando que algo está sempre lento, ou se ocorre em picos, quando algo congela o servidor de vez em quando. O mesmo vale para as métricas de CPU e memória.

Se você estiver integrando o Spark a sistemas de monitoramento, os relatórios de integridade poderão alimentar esse fluxo de dados.


Dicas, detalhes importantes e erros comuns

Um erro comum é executar o profiler por pouco tempo. Trinta segundos é o mínimo, mas um ou dois minutos é melhor. Se você analisar apenas 5 segundos, pode capturar uma oscilação isolada em vez do problema real.

Batalha de bruxas no Minecraft
Batalha de bruxas no Minecraft

Outro erro é presumir que o resultado do profiler é 100% preciso. A análise baseada em amostragem tem ruído estatístico. Se os principais resultados mostrarem 39,8% e 39,7% do tempo da CPU, provavelmente são equivalentes. Procure as grandes discrepâncias, não as pequenas diferenças.

Algumas configurações mais recentes de servidores usam versões novas do Java, 21 ou superior, com mecanismos de análise diferentes. Spark é compatível com elas, mas, se você estiver usando uma JVM mais antiga, talvez tenha acesso apenas ao mecanismo de análise Java, e não à variante nativa com async-profiler. Ambos funcionam bem. A opção nativa apenas tem menor sobrecarga.

Também vale observar que o resultado do profiler do Spark precisa ser visualizado em um navegador. Não é possível ler o resultado diretamente no console do servidor. Os resultados ficam hospedados temporariamente em spark.lucko.me, então você precisa de acesso à internet para consultá-los. Também é possível hospedar o visualizador por conta própria, mas isso é desnecessário para a maioria das pessoas.

Se você administra uma rede com dezenas de servidores, analisar cada um manualmente fica cansativo. Leve isso em consideração.


Ferramentas relacionadas e alternativas

Alguns outros projetos realizam tarefas semelhantes, embora o Spark tenha se tornado a opção padrão para a maioria dos administradores de servidores.

WarmRoast foi o profiler Java original para Minecraft, e o Spark surgiu a partir dele. Se você usa uma configuração de servidor muito antiga, WarmRoast talvez seja sua única opção, mas hoje não há um bom motivo para escolhê-lo em vez do Spark.

Timings, presente em versões antigas do Spigot, fornecia parte dessas informações, mas não chegava nem perto do nível de detalhes ou da utilidade da análise do Spark. Se o seu servidor ainda tem Timings integrado, Spark representa uma enorme melhoria.

JFR, ou Java Flight Recorder, é um profiler integrado à JVM e disponível no Java 11 ou superior. É poderoso, mas excessivo para a maioria das situações no Minecraft e também mais difícil de interpretar. Spark oferece as mesmas informações em um formato mais útil.

Para o desempenho no cliente, não existe uma alternativa realmente equivalente ao profiler do Spark no ecossistema do Minecraft. A maioria das pessoas acaba recorrendo à depuração com F3 ou a tentativas e erros.

Se você está criando um servidor e quer considerar o desempenho desde a etapa de planejamento, ferramentas como o gerador de texto do Minecraft podem ajudar a evitar spam no chat, que prejudica sutilmente o desempenho. Entender a estrutura do mundo com ferramentas como a ferramenta de busca de blocos também ajuda a identificar regiões que consomem muitos recursos antes que elas causem problemas.


Quando vale a pena simplesmente executar o Spark

Você não precisa de um motivo especial para analisar seu servidor. Se tem curiosidade sobre o desempenho, execute o Spark. Na pior das hipóteses, você descobrirá que seu servidor já funciona muito bem. Na melhor, encontrará um plugin que usa 50% da CPU e nem lembrava que estava instalado.

A maioria dos administradores executa o Spark quando algo dá errado, corrige o problema e segue em frente. Alguns operadores mais preventivos analisam o servidor todos os meses para detectar uma degradação gradual, causada pelo acúmulo crescente de dados.

De qualquer forma, Spark é gratuito, leve e responde a dúvidas sobre desempenho em poucos minutos, em vez de exigir horas de tentativas e suposições.

lucko/spark - GPL-3.0, ⭐1269
Sobre o autor
Alex Maftei
Alex MafteiRedator-chefe

Lead Writer at Minecraft.How, software developer, and lifelong gamer. I combine hands-on development experience with a passion for gaming and technology. I enjoy exploring new games, experimenting with software, testing mods and tools, and building practical solutions. My writing focuses on sharing real-world experience, technical knowledge, and useful insights with the gaming and developer communities.

Perguntas Frequentes

Spark é gratuito e de código aberto?
Sim. Spark é licenciado sob a GPL-3.0 e seu uso é totalmente gratuito. O código-fonte está disponível no GitHub, em lucko/spark. Não há recursos premium nem planos pagos.
Posso usar o Spark no cliente para encontrar problemas de FPS?
Sim. Spark funciona em clientes Fabric e Forge para analisar o desempenho local do jogo. Use /spark profiler para identificar se as quedas de FPS são causadas pela renderização, pelo processamento de entidades ou pelo carregamento de chunks.
Qual é a diferença entre os mecanismos de análise nativo e Java?
O mecanismo nativo, async-profiler, tem menor sobrecarga e oferece mais detalhes, mas funciona apenas no Linux e macOS. O mecanismo Java funciona em qualquer sistema e fornece resultados semelhantes, com uma sobrecarga um pouco maior. A maioria dos usuários não perceberá a diferença.
Preciso configurar o Spark depois de instalá-lo?
Não. Coloque o plugin na pasta plugins, reinicie e comece a analisar. Não há nenhum arquivo de configuração para editar. Todas as opções estão disponíveis por meio de comandos dentro do jogo, como /spark tps ou /spark profiler.
Spark pode monitorar o desempenho automaticamente ao longo do tempo?
Spark inclui recursos de monitoramento de integridade que acompanham métricas de TPS, CPU e memória. Você pode integrar essas métricas a sistemas externos de monitoramento, embora a análise contínua exija verificações manuais na maioria das configurações.

Have a Question or Tip about this Guide?Community Q&A

Ask a question or help other players below. Join the discussion and share your Minecraft tips!

Comentários

Nenhum comentário ainda. Seja o primeiro a compartilhar sua opinião!