spark is de profiler voor Minecraft-servers. Als de server hapert, vertelt spark je binnen enkele seconden of de tickrate lijdt, welke plugins of farms tijd opslokken en of de CPU of het geheugen aan de limiet zit. Deze guide laat de drie commands zien die je echt nodig hebt, en hoe je de cijfers leest. De screenshots komen van een testserver met Paper 1.21.4.

Installatie

spark draait als plugin op Paper en Spigot en als mod op Fabric, NeoForge en Forge. In het panel vind je het onder Plugins → Browser. Er is geen configuratie nodig. De commands horen bij de moderatiegroep; de node daarvoor heet spark. Hoe je die toekent, staat in LuckPerms: rechten instellen.

Eerste blik: TPS en tickduur

/spark tps toont drie regels:

Uitvoer van /spark tps: TPS, tickduren en CPU-belasting
Uitvoer van /spark tps: TPS, tickduren en CPU-belasting
  • TPS (ticks per seconde) over de laatste 5 seconden, 10 seconden, 1, 5 en 15 minuten. 20,0 is het maximum. Vanaf ongeveer 19 merken spelers nog niets, onder 15 bewegen dieren schokkerig, onder 10 wordt de server onspeelbaar.
  • Tickduur als minimum, mediaan, 95e percentiel en maximum in milliseconden. Een tick mag 50 ms duren om 20 TPS vast te houden. In de afbeelding ligt de mediaan op 2,4 ms; de server heeft dus veel reserve. Doorslaggevend is het 95e percentiel: ligt dat dicht bij 50 ms, dan ontstaan haperingen, ook al ziet het gemiddelde er goed uit.
  • CPU-belasting gescheiden naar systeem (de hele machine) en proces (alleen jouw server). Bij een gehuurde server is de proceswaarde de belangrijke.

/spark healthreport vat dezelfde waarden samen met geheugen en schijf in één rapport.

De profiler: wie slokt de tijd op?

Als de TPS instort, start je de profiler:

/spark profiler start

spark bevestigt de start en blijft op de achtergrond draaien. Laat hem minstens één minuut draaien terwijl het probleem optreedt, daarna:

/spark profiler stop
De profiler draait op de achtergrond; spark toont de commands voor weergeven, stoppen en annuleren
De profiler draait op de achtergrond; spark toont de commands voor weergeven, stoppen en annuleren

Bij het stoppen uploadt spark het rapport naar spark.lucko.me en geeft een link. Het rapport bevat geen spelersnamen, geen IP-adressen en geen chatberichten, maar call trees van het Java-proces. /spark profiler open opent het al tijdens de run, /spark profiler cancel gooit het weg zonder upload.

In het rapport klap je de boom van boven naar beneden open. Wat je meestal vindt:

  • Entity-ticks van een bepaald type: een farm met honderden dieren of items. Maak de farm kleiner of kalmeer hem met entity-activation-range in paper-world-defaults.yml.
  • Een plugin in een event-listener: plugin updaten, configuratie controleren of vervangen.
  • Chunk-laden door spelers die snel vliegen: view distance verlagen of de wereld met Chunky vooraf genereren.
  • Redstone-klokken: een schakeling die nooit stilstaat. Vraag de speler om die uit te zetten.

Garbage Collection en geheugen

/spark gc toont hoe vaak en hoelang de Java-geheugenopruiming pauzeert. Veel lange pauzes betekenen te weinig RAM of een geheugenlek in een plugin. /spark heapsummary somt op welke objecttypen het geheugen bezetten. Voordat je meer RAM bestelt, is een blik hierop de moeite waard: vaak lost een plugin-update het probleem op.

Veelvoorkomende fouten

  • TPS 20, toch lag. Het probleem ligt bij de client of het netwerk. /spark ping toont de latency per speler.
  • Profiler-link vergeten. /spark profiler zonder argumenten toont de status; na het stoppen staat de link ook in de serverconsole.
  • Cijfers zonder vergelijking. Eén TPS-waarde zegt weinig. Meet één keer met een lege server als referentie.

FAQ

Vanaf welke TPS-waarde merken spelers iets?

Tot ongeveer 19 TPS valt er niets op. Onder 15 bewegen dieren en projectielen schokkerig, onder 10 wordt de server onspeelbaar. Let daarbij minder op het gemiddelde dan op het 95e percentiel van de tickduur: ligt dat dicht bij 50 ms, dan zijn er haperingen, ook al ziet het TPS-gemiddelde er goed uit.

Bevat een spark-rapport persoonlijke gegevens van mijn spelers?

Nee. Het rapport bestaat uit call trees van het Java-proces en bevat geen spelersnamen, IP-adressen of chatberichten. Als je toch niets wilt uploaden, gooi de run dan weg met /spark profiler cancel of lees hem met /spark profiler open direct in de game.

Hoelang moet de profiler draaien?

Minstens één minuut, en wel terwijl het probleem daadwerkelijk optreedt. Een run op een rustige server laat alleen zien dat alles in orde is. Bij sporadische haperingen laat je hem langer draaien en stop je hem direct na een uitvalmoment.

Helpt meer RAM tegen lag?

Alleen als de geheugenopruiming de oorzaak is. /spark gc toont de frequentie en duur van de Java-pauzes, /spark heapsummary de objecttypen die het geheugen bezetten. Vaak zit er één enkele plugin achter, en een update lost het probleem goedkoper op dan meer RAM.

De TPS staat op 20 en het hapert toch — wat nu?

Dan ligt het niet aan de server-tick, maar aan de client of het netwerk. /spark ping toont de latency per speler. Gaat het maar om enkele spelers, dan is hun verbinding de oorzaak; gaat het om iedereen, controleer dan de view distance en de framerate op de client.

Verdere guides

Een wereld vooraf genereren neemt het chunk-laden van de server over: Chunky: wereld vooraf genereren. Hoe het panel aanhoudend lage TPS meldt, beschrijft Minecraft-serverlag: TPS en Watchdog.

Bronnen