Skip to content
Pular para o conteúdo
Voltar ao Blog
Spark: O Profiler que seu Servidor Minecraft Precisa

Spark: O Profiler que seu Servidor Minecraft Precisa

Alexandru Maftei
Alexandru Maftei
@ice
Atualizado
32 visualizações
TL;DR:Spark é um profiler de performance leve para servidores, clientes e proxies de Minecraft que diagnostica lag, uso de CPU e problemas de memória em segundos. Instale o plugin, execute um perfil rápido e obtenha informações detalhadas sobre o que está deixando seu jogo mais lento.
🐙 Projeto Minecraft de código aberto

lucko/spark

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

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

Se seu servidor Minecraft está com lag e você não sabe por quê, está no escuro. Pode ser CPU, pode ser memória, pode ser um plugin consumindo recursos em segundo plano. Spark elimina o improviso com dados de perfil em tempo real que mostram exatamente onde vivem seus problemas de performance.

O que Spark Faz (Em Palavras Simples)

Spark é um profiler de performance que funciona em clientes, servidores e proxies de Minecraft. Pense nisto como abrir o capô do seu carro para ver quais peças estão funcionando mal. Em vez de adivinhar por que seu servidor cai para 10 TPS, você executa o Spark, espera 30 segundos, e obtém um detalhamento completo do que está consumindo seus recursos.

A ferramenta possui três capacidades principais:

  • Análise de CPU - mostra quais threads e caminhos de código estão consumindo tempo de processador
  • Inspeção de memória - deixa você visualizar o uso de heap, tirar instantâneos e monitorar coleta de lixo
  • Métricas de saúde do servidor - rastreia TPS, duração de tick, uso de CPU, memória e espaço em disco tudo em um lugar

Executá-lo não requer configuração. Coloque o mod ou plugin, digite um comando e você está coletando dados.


Por que Você Usaria Isto

Existem alguns cenários onde o Spark se torna inestimável.

Primeiro: seu servidor começa a cair de fps sem razão óbvia. Você desabilitou plugins um por um, limpou caches de chunk, reiniciou o servidor. Ainda com lag. Spark mostra em 30 segundos que sua manipulação de ItemStack é o gargalo, ou que uma tarefa assíncrona de um plugin está bloqueando a thread principal. Sem mais palpites selvagens.

Segundo: você está executando um servidor maior e quer ser proativo. Você pode deixar o Spark monitorando em segundo plano, verificando métricas a cada poucos minutos, e ele o alerta quando algo sai do trilho antes dos jogadores notarem.

Terceiro: você está lidando com um problema de performance do lado do cliente. Talvez sua máquina caia para 30 FPS em certas áreas. Spark no lado do cliente mostra se é overhead de renderização, processamento de entidade ou carregamento do mundo que é o culpado.

E se você trabalha com redes de servidor ou proxies Bungeecord, o Spark também cobre isso.


Instalando Spark

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

GitHub project card for lucko/spark
GitHub project card for lucko/spark

Para servidores Paper/Spigot:

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

O plugin registra comandos automaticamente. Nenhum arquivo de configuração para mexer, nenhuma dependência para lidar.

Para clientes Fabric/Forge:

bash
1. Pegue a versão Fabric/Forge da página de downloads
2. Mova-a para sua pasta mods/
3. Inicie o jogo
4. Use comandos /spark no jogo ou no chat

Para proxies Bungeecord ou Velocity:

bash
1. Coloque o JAR na pasta plugins do seu proxy
2. Reinicie o proxy
3. O Spark está pronto para fazer perfil do tráfego de sua rede

Pronto. Se você instalou outros plugins, você já fez coisas mais difíceis do que configurar o Spark.


Recursos-chave que Importam

O Profiler de CPU é por onde a maioria das pessoas começa. Execute `/spark profiler start`, vá sobre seus negócios por 30 segundos a 2 minutos, depois `/spark profiler stop`. Spark gera um link para um visualizador interativo mostrando uma árvore de chamadas. Você pode ver que 40% do seu tempo de CPU está em EntityAI pathfinding, ou 25% está em recálculo de iluminação. A árvore é legível e você pode aplicar mapeamentos de desofuscação se quiser se aprofundar nos internals do Minecraft.

O que torna isto diferente de outros profilers: é leve o suficiente para ser executado em servidores de produção sem destruir performance, e oferece resultados em segundos em vez de minutos ou horas de análise.

A inspeção de memória vem em três sabores. Resumo de heap oferece um rápido instantâneo do que as classes estão ocupando a maior parte da memória (como entidades de bloco, objetos de entidade ou dados de chunk). Dump de heap leva um instantâneo JVM completo que você pode analisar com ferramentas convencionais como Eclipse MAT ou JProfiler se você realmente precisar se aprofundar. Monitoramento de GC mostra quando a coleta de lixo é executada, quanto tempo leva e quanta memória é liberada, o que é útil para ajustar suas flags de inicialização JVM.

A maioria das vezes você não precisa de heap dumps. A visualização de resumo responde 80% das perguntas sobre memória.

Relatório de saúde é a parte chata mas útil. `/spark tps` oferece timing de tick mais preciso do que vanilla `/tps`. Você pode ver durações de tick mín/máx/média, o que diz se seu lag é consistente (algo está sempre lento) ou espaçado (algo está intermitentemente congelando o servidor). O mesmo com métricas de CPU e memória.

Se você estiver integrando o Spark com sistemas de monitoramento, os relatórios de saúde podem alimentar esse pipeline.


Dicas, Pegadinhas e O Que Faz as Pessoas Tropeçarem

Um erro: executar o profiler por um tempo muito curto. Trinta segundos é o mínimo; um ou dois minutos é melhor. Se você fizer o perfil por 5 segundos, você pode pegar um pico em vez do problema real.

Witch Brawl in Minecraft
Witch Brawl in Minecraft

Outro: assumir que a saída do profiler é 100% precisa. A análise baseada em amostragem tem ruído estatístico. Se o resultado superior mostrar 39,8% vs 39,7% de tempo de CPU, eles provavelmente são iguais. Procure pelos grandes outliers, não pelas pequenas diferenças.

Algumas configurações de servidor mais novas são executadas em versões Java mais novas (21+) com diferentes backends de análise. Spark lida com isso, mas se você estiver em uma JVM mais antiga, pode ter apenas acesso ao mecanismo Java profiler, não à variante nativa/async-profiler. Ambos funcionam bem; nativa tem apenas menor overhead.

Também vale a pena notar: o Spark requer visualizar a saída do profiler em um navegador da web. Você não pode ler a saída diretamente do console do servidor. Os resultados são hospedados temporariamente em spark.lucko.me, então você precisa de acesso à internet para visualizá-los (ou você pode auto-hospedar o visualizador, mas isso é exagero para a maioria das pessoas).

Se você estiver gerenciando uma rede com dezenas de servidores, fazer o perfil de cada um manualmente fica tedioso. Planeje para isso.


Ferramentas Relacionadas e Alternativas

Alguns outros projetos fazem trabalho semelhante, embora o Spark se tenha tornado o padrão para a maioria dos administradores de servidor.

WarmRoast foi o profiler Java original para Minecraft, e Spark na verdade evoluiu a partir dele. Se você estiver em uma configuração de servidor muito antiga, WarmRoast pode ser sua única opção, mas não há boa razão para usá-lo em vez do Spark estes dias.

Timings (de versões mais antigas do Spigot) fornecia algumas dessas informações, mas não estava nem perto de ser tão detalhado ou útil quanto a análise do Spark. Se seu servidor ainda tiver Timings integrado, Spark é uma atualização massiva.

JFR (Java Flight Recorder) é um profiler JVM integrado disponível em Java 11+. É poderoso, mas também exagerado para a maioria dos cenários de Minecraft e mais difícil de interpretar. Spark oferece as mesmas informações em um formato mais útil.

Para performance do lado do cliente, não existe equivalente real ao profiler de cliente do Spark no ecossistema Minecraft. A maioria das pessoas recorre ao debugging F3 ou tentativa e erro.

Se você estiver construindo um servidor e quiser pensar em performance desde o estágio de design, ferramentas como gerador de texto do Minecraft podem ajudá-lo a evitar spam de chat (um dreno sutil de performance), e entender sua estrutura de mundo com ferramentas como a ferramenta de pesquisa de blocos pode ajudá-lo a identificar regiões com muitos recursos antes que se tornem problemas.


Quando Apenas Executar

Você não precisa de uma razão especial para fazer o perfil do seu servidor. Se você está curioso sobre performance, execute o Spark. O pior caso: você aprende que seu servidor já está funcionando muito bem. O melhor caso: você encontra um plugin que está usando 50% da sua CPU e não sabia que estava instalado.

A maioria dos administradores de servidor executa o Spark uma vez quando algo quebra, corrige o problema e segue em frente. Alguns operadores proativos de servidor fazem perfil mensal apenas para pegar aumento (essa degradação de performance gradual conforme mais dados se acumulam).

De qualquer forma, é gratuito, é leve e responde perguntas de performance em minutos em vez de horas de adivinhas.

lucko/spark - GPL-3.0, ⭐1.269
Sobre o autor
Alexandru Maftei
Alexandru MafteiRedator-chefe

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Comentários

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

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy