spark: Woher der Lag auf deinem Minecraft-Server kommt
spark ist der Standard-Profiler für Minecraft-Server: Er misst, welcher Code, welche Mod oder welcher Chunk deine Tick-Zeit auffrisst, damit du nicht raten musst. Ein Server läuft mit 20 Ticks pro Sekunde, jeder Tick hat also 50 Millisekunden Zeit. Dauert ein Tick dauerhaft länger, sinkt deine TPS und alles fühlt sich zäh an. Mit /spark profiler, /spark tps und /spark heapsummary hast du meistens innerhalb von fünf Minuten einen konkreten Verdächtigen.
Was macht ein Profiler eigentlich?
Ein Profiler schaut viele Male pro Sekunde nach, was der Hauptthread deines Servers gerade tut, und notiert die vollständige Aufrufkette: von der Hauptschleife über den Bereich, der gerade an der Reihe ist, bis zur genauen Methode in einem Plugin oder einer Mod. Tausende solcher Momentaufnahmen zusammen zeigen, wohin die Zeit fließt. Genau dieses Arbeiten mit Stichproben ist der Grund, warum spark deinen Server kaum belastet.
Der Unterschied zum Raten ist gewaltig. „Das Plugin fühlt sich schwer an“ ist ein Gefühl; „ein Drittel der Tick-Zeit steckt in der Wegfindung von Mobs an einer einzigen Stelle“ ist eine Messung. Lösen tut spark nichts, er zeigt dir nur, wo es klemmt.
Wie installierst du spark auf deinem Server?
spark gibt es als Plugin für Bukkit, Spigot, Paper und Purpur, als Mod für Fabric, Forge und NeoForge und als fertige Version für Proxys wie BungeeCord und Velocity. Nimm unbedingt die richtige Variante: Eine Plugin-Datei tut in einem mods-Ordner überhaupt nichts.
- Tippe zuerst
/spark tpsin die Konsole; manche Serversoftware bringt spark bereits mit. - Lade sonst die passende Version herunter: Das Plugin gehört nach
plugins/, die Mod nachmods/. - Lade die Datei über die Dateiverwaltung deiner Server-Oberfläche oder per SFTP hoch. In einem Pterodactyl-Panel ziehst du sie einfach direkt hinein.
- Starte den Server vollständig neu. Nutze kein
/reload, das verursacht auf Paper öfter Probleme, als es löst. - Gib dir selbst die Rechte mit LuckPerms:
/lp user DeinName permission set spark true. Ohne Berechtigung funktioniert nur die Konsole.
spark ist kostenlos und quelloffen und steht nicht ohne Grund in jeder Übersicht der wichtigsten Kern-Plugins neben EssentialsX, LuckPerms und CoreProtect.
Was sagen dir /spark tps und /spark health?
/spark tps zeigt dir die TPS über die letzten 5 und 10 Sekunden sowie über 1, 5 und 15 Minuten, dazu die MSPT: wie viele Millisekunden ein Tick wirklich kostet. Die MSPT ist die ehrlichere Zahl, denn die TPS bleibt bei 20, solange der Server gerade so mitkommt. 20 TPS bei 45 ms sind etwas anderes als 20 TPS bei 12 ms: Der erste Server kippt, sobald zehn Spieler dazukommen.
Bei der MSPT bekommst du außerdem einen Median und höhere Perzentile. /spark health ergänzt das um die Auslastung des Prozessors, den Speicherverbrauch, die Zeit in der Speicherbereinigung und den freien Platz auf der Festplatte.
| Messwert | Richtwert | Was du damit machst |
|---|---|---|
| MSPT unter 30 ms | Luft nach oben | Nichts, du kannst wachsen |
| MSPT 30 bis 50 ms | Knapp | Profiler laufen lassen, bevor es kippt |
| MSPT über 50 ms | TPS fällt unter 20 | Profiler während des Lags laufen lassen |
| Median niedrig, 95. Perzentil hoch | Spitzen | Suche nach automatischem Speichern, Chunk-Generierung oder einer Aufgabe mit festem Zeittakt |
Wie lässt du /spark profiler zum richtigen Zeitpunkt laufen?
Die wichtigste Regel: Miss, während der Lag da ist. Ein Bericht von einem ruhigen Sonntagmorgen sagt nichts über die Spitze am Freitagabend. Starte mit /spark profiler start, lass ihn drei bis fünf Minuten laufen und beende ihn mit /spark profiler stop. Du bekommst einen Link zu einer Online-Ansicht, die du mit deinem Team oder mit deinem Hoster teilen kannst.
Ein paar Optionen machen den Unterschied:
--timeout 300stoppt automatisch nach 300 Sekunden, falls du es selbst vergisst.--only-ticks-over 100nimmt nur Ticks mit, die länger als 100 ms gedauert haben. Ideal für kurze Ruckler, während deine durchschnittliche MSPT völlig in Ordnung ist.--thread *misst alle Threads, nicht nur den Hauptthread. Auf Servern mit Mods steckt die Chunk-Generierung oft in eigenen Threads.--allocmisst keine Zeit, sondern die Speicherzuweisung: welcher Code den meisten Müll erzeugt.
Lass während der Sitzung einen Spieler in den Problembereich fliegen; einen kurzen Bericht liest du schneller als eine Stunde voller Rauschen.
Wie liest du einen spark-Bericht, ohne dich zu verlieren?
Die Online-Ansicht öffnet sich mit einer Baumstruktur. Ganz oben steht die Hauptschleife des Servers bei ungefähr 100 Prozent. Diese Zahl sagt nichts aus, dorthin fließt die Zeit per Definition komplett. Klapp also immer den schwersten Unterast auf, bis sich der Prozentwert in zehn Zweige von je ein paar Prozent auflöst. Der letzte Ast, der noch einen ordentlichen Anteil abbekommt, ist dein Verdächtiger. Siehst du 60 Prozent in einem Ast, der nur „tick“ heißt, bist du nicht tief genug.
Zwei Dinge beschleunigen das. spark kann die gemessene Zeit der Quelle zuordnen, also dem Plugin oder der Mod, aus der der Code stammt; das liefert dir in zehn Sekunden eine Rangliste der ersten drei. Und Paketnamen helfen: Siehst du net.minecraft, erledigt der Server Vanilla-Arbeit wie Entities, Chunks und Redstone. Aber Vorsicht: Ein Plugin, das tausend Mobs erzeugt, taucht als Kosten der Mobs auf, nicht als Kosten dieses Plugins.
Welche Ursachen kommen in der Praxis am häufigsten heraus?
Vier Funde decken die meisten Berichte ab, die uns über den Weg laufen.
Zu viele Entities an einer Stelle
Mobfarmen, in denen nichts getötet wird, hunderte lose Items in einem Tunnel, ein Berg Boote auf dem Spawnplatz. Im Bericht versickert die Zeit im Ticken von Entities oder im Erzeugen von Mobs. Paper kann pro Welt anzeigen, wie viele Entities welchen Typs wo stehen; teleportiere dich hin und die Sache ist sofort klar.
Ein Plugin, das jeden Tick etwas tut
Ein Klassiker: ein Scoreboard oder ein Hologramm, das sich zwanzigmal pro Sekunde aktualisiert und dabei alle Spieler durchgeht. Bei zehn Spielern merkst du nichts, bei achtzig steht es ganz oben. Von jedem Tick auf einmal pro Sekunde spart den Faktor zwanzig, sofern das Plugin das zulässt.
Ketten aus Trichtern
Trichter prüfen ununterbrochen, ob über oder neben ihnen etwas liegt. Lange Reihen unter vollen Kisten und Sortieranlagen aus Dutzenden Blöcken summieren sich kräftig. Paper hat Optionen, um diese Prüfungen zu drosseln, und oft ist ein Teil der Kette ohnehin überflüssig.
Eine zu hohe view-distance
Jede Stufe kostet quadratisch mehr Chunks pro Spieler; der Standardwert 10 bedeutet 21 mal 21 Chunks rund um jeden Einzelnen. Weil sich die simulation-distance getrennt einstellen lässt, kannst du deine Spieler weit blicken lassen, während nur in der Nähe noch Entities und Redstone ticken. Oft der günstigste Gewinn.
| view-distance | Chunks pro Spieler | Unterschied zu 10 |
|---|---|---|
| 12 | 625 | +42 Prozent |
| 10 (Standard) | 441 | Bezugswert |
| 8 | 289 | -34 Prozent |
| 6 | 169 | -62 Prozent |
Was du danach machst, steht in unserem Artikel darüber, wie du deinen Minecraft-Server optimierst und Lag loswirst. Ändere immer nur eine Sache und miss danach neu, sonst weißt du nicht, welche Anpassung gewirkt hat.
Wann brauchst du /spark heapsummary?
/spark heapsummary zeigt dir, was in diesem Moment im Speicher liegt: pro Klasse die Anzahl der Objekte und die Anzahl der Bytes, nach Größe sortiert. Du nutzt ihn, wenn dein Speicherverbrauch immer weiter steigt, wenn die Speicherbereinigung lange Pausen verursacht oder wenn der Server nach ein paar Stunden langsamer wird, ein Neustart aber alles behebt.
Die Antwort steht oft in den obersten zehn Zeilen: Millionen von Entity-Objekten deuten auf genau dieselbe überfüllte Farm. Bei schweren Modpacks ist es schlicht die Menge: All the Mods 10 läuft auf NeoForge mit Minecraft 1.21.1 und 400 bis 500 Mods, braucht mindestens 10 GB RAM, 12 GB für eine kleine Gruppe und 14 bis 16 GB bei fünf oder mehr Spielern mit viel Automatisierung. FerriteCore spart dort 30 bis 40 Prozent Speicher; unter NeoForge helfen Canary und ModernFix zusätzlich mit.
Sei ehrlich zur Grenze dieses Befehls: heapsummary ist eine Momentaufnahme, keine Untersuchung von Speicherlecks. Willst du wissen, welches Objekt genau etwas festhält, brauchst du einen vollständigen Speicherabzug plus ein Werkzeug wie Eclipse MAT. Das ist Spezialistenarbeit und für einen normalen Survival-Server selten nötig.
Wann hilft dir spark nicht weiter?
Steht deine TPS bei 20 und liegt deine MSPT deutlich unter 50 ms, während sich Spieler beschweren, dass sie ständig zurückgerissen werden? Dann liegt es nicht an der Tick-Schleife, sondern an der Verbindung: Paketverlust, eine schlechte Route oder ein Angriff. Dafür hat spark /spark ping, womit du die Verzögerung all deiner Spieler nebeneinander siehst. Deutet das auf etwas Bösartiges hin, ist unser Artikel über den Umgang mit DDoS-Angriffen auf deinen Gameserver nützlicher als ein Profiler.
spark sagt dir auch nicht, ob deine Hardware zu langsam ist. Minecraft hängt stark an einem einzelnen Kern, deshalb enttäuscht ein alter Prozessor mit vielen Kernen. Siehst du vor allem Vanilla-Aufgaben, die überall ein bisschen zu lange dauern, ohne deutlichen Ausreißer, dann bist du mit dem Konfigurieren am Ende und schnellere Hardware ist die ehrliche Schlussfolgerung. Beim Minecraft-Hosting von MC-Node läuft die Budget-Linie auf AMD EPYC 7443P und die Premium-Linie auf AMD Ryzen 9 9950X, und die zweite ist für Server gedacht, die an einem einzelnen Kern hängen bleiben.
Häufig gestellte Fragen
Kostet spark selbst Leistung? Kaum. spark arbeitet mit Stichproben und macht Momentaufnahmen, statt jeden einzelnen Aufruf zu zählen. Du kannst ihn ruhig dauerhaft installiert lassen; ohne aktive Sitzung tut er so gut wie nichts. Nur während /spark profiler entsteht eine kleine zusätzliche Last.
Funktioniert spark auch auf Servern mit Mods? Ja, es gibt Versionen für Fabric, Forge und NeoForge. Bei einem Pack wie All the Mods 10, das auf NeoForge und Minecraft 1.21.1 läuft und Java 21 voraussetzt, ist spark besonders nützlich: Bei 400 bis 500 Mods ist Raten aussichtslos. Nutze dort auf jeden Fall --thread *.
Was ist der Unterschied zwischen /spark tps und /spark profiler? /spark tps ist das Thermometer: Es sagt dir, ob der Server mitkommt und was ein Tick kostet. /spark profiler ist die Untersuchung, die dir erklärt, warum. Fang mit tps und health an und lass den Profiler während des Problems laufen.
Soll ich ClearLagg installieren, wenn spark viele Entities findet? Kannst du machen, aber es ist nur ein Pflaster: ClearLagg räumt Items in festen Abständen weg, während die Farm, die sie produziert, munter weiterläuft. Behebe zuerst die Ursache und nutze ClearLagg als Sicherheitsnetz, nicht umgekehrt.