lucko/spark
Um profiler de desempenho para clientes, servidores e proxies de Minecraft.
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.

Para servidores Paper/Spigot:
1. Baixe o plugin em spark.lucko.me/download
2. Coloque o arquivo JAR na pasta plugins/
3. Reinicie o servidor
4. ProntoO plugin registra os comandos automaticamente. Não há arquivo de configuração para editar nem dependências para administrar.
Para clientes Fabric/Forge:
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 chatPara proxies Bungeecord ou Velocity:
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.

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


