EndyStudio
Plugins

Analisador de perfis do spark

Cole o link do /spark profiler e receba o TPS e os tempos de tick do seu servidor, uma lista do que mudar no Java, nos arquivos de config do servidor e nos plugins, e o tempo que cada plugin toma de cada tick.

  • Grátis
  • Sem conta
  • Roda no seu navegador

Perfil do spark

Como pegar o link

  1. Rode /spark profiler start no servidor. O spark vem com o Paper e o Purpur desde a 1.21; em outros servidores, instale antes o plugin ou mod spark.
  2. Deixe gravando por pelo menos 5 minutos, com jogadores online.
  3. Rode /spark profiler stop e cole aqui o link que ele te der.

O perfil é baixado direto do spark.lucko.me para o seu navegador. Ele nunca passa pelo nosso servidor.

O que o analisador verifica

O spark registra o que o servidor estava fazendo muitas vezes por segundo e envia isso junto com os números e os arquivos de config do servidor. O analisador lê tudo e passa por quatro coisas:

  • Como o servidor está. TPS e MSPT dos últimos minutos, CPU, memória, jogadores e entidades carregadas, e uma barra por minuto para você ver quando ficou lento.
  • O Java e a máquina. O tamanho do heap, o coletor de lixo e se ele usa as flags do Aikar, coletas de lixo completas, memória que sobra depois da coleta, threads de CPU, e se a máquina está sem memória ou ocupada com outras coisas.
  • Configurações. view-distance e simulation-distance no server.properties, limites de spawn no bukkit.yml, activation ranges de entidades no spigot.yml, e as opções do Paper e do Purpur para explosões, redstone, colisões, spawners, funis, suportes de armadura e aldeões. Cada item diz qual arquivo e qual chave mudar.
  • Plugins. O tempo que cada plugin leva na thread principal, plugins que costumam dar problema (ClearLag, PlugMan, stackers de mobs), e o chunk com mais entidades, com um comando /tp para ir até lá.

Os itens vão do que corrigir primeiro até as dicas opcionais. Enquanto o servidor dá conta, as mudanças de configuração aparecem como dicas: elas liberam um tempo de que você ainda não precisa.

Como fazer um perfil do spark

  1. Rode /spark profiler start no console ou no jogo. No Paper e no Purpur 1.21 ou mais recentes, o spark já vem embutido.
  2. Deixe gravando por pelo menos 5 minutos num horário normal, com jogadores online. Um perfil de um servidor vazio só mostra um servidor parado.
  3. Rode /spark profiler stop. O spark envia o perfil e mostra um link https://spark.lucko.me/….
  4. Cole o link acima. A análise começa sozinha.

Para lag que vem em picos em vez de o tempo todo, grave só os ticks lentos: /spark profiler start --only-ticks-over 100 guarda os ticks que levaram mais de 100 ms e ignora o resto.

TPS e MSPT

O servidor roda o mundo em ticks, 20 por segundo, então cada tick tem 50 ms. O MSPT (milissegundos por tick) é quanto um tick levou de verdade. Enquanto ele fica abaixo de 50, o servidor mantém 20 de TPS e tem tempo de sobra. Quando os ticks demoram mais, o TPS cai, e mobs, redstone e plantações ficam mais lentos para todo mundo.

MSPT O que significa
Abaixo de 30 ms Bastante espaço para os momentos de pico
30 – 45 ms Bom, mas com pouca margem
45 – 50 ms No limite: qualquer pico aparece
Acima de 50 ms O servidor fica para trás e o TPS cai

O analisador olha o percentil 95, o tempo abaixo do qual ficaram 95 % dos ticks. Uma média esconde os ticks lentos; o percentil 95 não.

Lendo o tempo por plugin

A lista de plugins soma o tempo gasto dentro do código de cada plugin na thread principal e divide pelos ticks gravados, então ela é lida em ms por tick, contra os 50 ms que cada tick tem. Um plugin que leva 5 ms por tick usa sozinho um décimo do orçamento. O tempo que um plugin gasta chamando outro plugin conta para o que foi chamado, do mesmo jeito que o visualizador do próprio spark conta.

O que sobra depois dos plugins é o próprio jogo: entidades, chunks, redstone e jogadores. Os itens de configuração miram essa parte. Para ver exatamente qual tarefa de um plugin toma o tempo, abra o perfil no visualizador do spark e mude para a visualização Sources.

As mudanças que costumam ajudar mais

  • Diminua a simulation-distance para 5 ou 6, e a view-distance para uns 8. A simulation distance decide quanto do mundo recebe tick em volta de cada jogador, então ela pesa em todo tick.
  • Diminua as activation ranges de entidades no spigot.yml, para os mobs longe dos jogadores receberem tick menos vezes.
  • Use as opções do Paper: optimize-explosions, a implementação de redstone ALTERNATE_CURRENT, max-entity-collisions em 2 e um tick rate de spawner de 2.
  • Inicie o Java com as flags do Aikar e um heap que combine com o servidor. A calculadora de RAM escreve as duas coisas para você.
  • Pré-gere o mundo com um plugin como o Chunky, para que chunks novos não sejam gerados enquanto o pessoal joga.

Mude uma coisa de cada vez e grave um perfil novo depois. Assim você sabe o que ajudou, e o que desfazer se uma farm parar de funcionar.

Seu perfil e a privacidade

O analisador roda no seu navegador: o perfil é baixado direto do spark.lucko.me e nunca passa pelo EndyStudio. Lembre que um perfil do spark inclui os arquivos de config do seu servidor (o spark esconde senhas, IPs e chaves parecidas), e que qualquer pessoa com o link pode abrir.

Perguntas frequentes

Como faço um perfil do spark?

Rode /spark profiler start no servidor, deixe gravando por pelo menos 5 minutos com jogadores online e depois rode /spark profiler stop. O spark envia o resultado e te dá um link do spark.lucko.me. Cole esse link no analisador.

O spark vem com o Paper?

Sim. O Paper, e forks como o Purpur, trazem o spark desde o Minecraft 1.21, então o comando /spark funciona sem instalar nada. No Spigot, Fabric, Forge, NeoForge, Velocity ou BungeeCord, instale antes o plugin ou mod spark.

O que é um MSPT bom?

Cada tick tem 50 ms. Abaixo de 30 ms sobra bastante espaço, de 30 a 45 ms está bom mas apertado, e quando os ticks passam de 50 ms com frequência o servidor não consegue mais manter 20 TPS e os jogadores sentem lag.

Meu perfil é enviado para o EndyStudio?

Não. Seu navegador baixa o perfil direto do spark.lucko.me e analisa no seu computador. Nada passa pelo nosso servidor e nada é guardado. Lembre que qualquer pessoa com um link do spark pode abrir o perfil, incluindo os arquivos de config do seu servidor.

Por que o analisador não mostra o detalhamento por plugin?

O detalhamento vem da árvore de chamadas do spark, que só os perfis do /spark profiler têm. Um relatório de saúde (/spark health) ou um resumo do heap (/spark heapsummary) não incluem isso.

O analisador diz que está tudo bem, mas os jogadores ainda sentem lag. Por quê?

O lag do lado do jogador nem sempre é o servidor. Se o TPS fica em 20 e os ticks são curtos, olhe a conexão (ping, perda de pacotes, o proxy) ou o FPS do próprio cliente. Se o lag vem em picos curtos, grave só os ticks lentos com /spark profiler start --only-ticks-over 100.