Was die Analyse prüft
spark zeichnet viele Male pro Sekunde auf, was der Server gerade tut, und lädt das zusammen mit den Werten und Config-Dateien des Servers hoch. Die Analyse liest alles davon und geht vier Bereiche durch:
- Wie es dem Server geht. TPS und MSPT der letzten Minuten, CPU, Speicher, Spieler und geladene Entities, und ein Balken pro Minute, damit du siehst, wann es langsam wurde.
- Java und die Maschine. Die Heap-Größe, der Garbage Collector und ob er Aikar’s Flags nutzt, Full GCs, der nach dem Aufräumen freie Speicher, CPU-Threads und ob der Maschine Speicher fehlt oder sie mit anderem beschäftigt ist.
- Einstellungen. view-distance und simulation-distance in server.properties, Spawn-Limits in bukkit.yml, Entity Activation Ranges in spigot.yml und die Optionen von Paper und Purpur für Explosionen, Redstone, Kollisionen, Spawner, Trichter, Rüstungsständer und Dorfbewohner. Jeder Punkt sagt dir, welche Datei und welchen Key du ändern musst.
- Plugins. Die Zeit, die jedes Plugin auf dem Main-Thread braucht, Plugins, die gern Probleme machen (ClearLag, PlugMan, Mob-Stacker), und der Chunk mit den meisten Entities, mit einem /tp-Befehl, um hinzukommen.
Die Punkte sind sortiert, von dem, was du zuerst beheben solltest, bis zu optionalen Tipps. Solange der Server hinterherkommt, erscheinen Einstellungsänderungen als Tipps: Sie machen Zeit frei, die du noch nicht brauchst.
So erstellst du ein spark-Profil
- Führe
/spark profiler startin der Konsole oder im Spiel aus. Auf Paper und Purpur ab 1.21 ist spark schon eingebaut. - Lass es mindestens 5 Minuten zu einer normalen Zeit aufzeichnen, während Spieler online sind. Ein Profil von einem leeren Server zeigt nur einen Server im Leerlauf.
- Führe
/spark profiler stopaus. spark lädt das Profil hoch und gibt einenhttps://spark.lucko.me/…-Link aus. - Füge den Link oben ein. Die Analyse startet von selbst.
Bei Lag, der in Spitzen statt dauerhaft kommt, zeichne nur die langsamen Ticks auf: /spark profiler start --only-ticks-over 100 behält Ticks, die über 100 ms gedauert haben, und ignoriert den Rest.
TPS und MSPT
Der Server lässt die Welt in Ticks laufen, 20 pro Sekunde, jeder Tick hat also 50 ms. MSPT (Millisekunden pro Tick) ist, wie lange ein Tick wirklich gedauert hat. Solange sie unter 50 bleibt, hält der Server 20 TPS und hat Zeit übrig. Sobald Ticks länger dauern, sinken die TPS, und Mobs, Redstone und Pflanzen werden für alle langsamer.
| MSPT | Was das bedeutet |
|---|---|
| Unter 30 ms | Viel Luft für volle Momente |
| 30 – 45 ms | In Ordnung, aber mit wenig Puffer |
| 45 – 50 ms | Am Limit: Jede Spitze fällt auf |
| Über 50 ms | Der Server fällt zurück und die TPS sinken |
Die Analyse schaut auf das 95. Perzentil, die Zeit, unter der 95 % der Ticks geblieben sind. Ein Durchschnitt versteckt langsame Ticks, das 95. Perzentil nicht.
Die Zeit pro Plugin lesen
Die Plugin-Liste addiert die Zeit, die im Code jedes Plugins auf dem Main-Thread verbracht wurde, und teilt sie durch die aufgezeichneten Ticks. Sie wird also in ms pro Tick gelesen, gemessen an den 50 ms, die jeder Tick hat. Ein Plugin mit 5 ms pro Tick verbraucht allein ein Zehntel des Budgets. Zeit, die ein Plugin damit verbringt, ein anderes Plugin aufzurufen, zählt für das aufgerufene, so wie sparks eigener Viewer sie zählt.
Was nach den Plugins übrig bleibt, ist das Spiel selbst: Entities, Chunks, Redstone und Spieler. Auf diesen Teil zielen die Punkte zu den Einstellungen. Um genau zu sehen, welche Task eines Plugins die Zeit braucht, öffne das Profil in sparks Viewer und wechsle zur Ansicht Sources.
Die Änderungen, die meist am meisten bringen
- Senk die simulation-distance auf 5 oder 6 und die view-distance auf etwa 8. Die Simulationsdistanz bestimmt, wie viel von der Welt um jeden Spieler tickt, sie wirkt sich also auf jeden Tick aus.
- Senk die Entity Activation Ranges in spigot.yml, damit Mobs weit weg von Spielern seltener ticken.
- Nutze die Optionen von Paper: optimize-explosions, die Redstone-Implementierung ALTERNATE_CURRENT, max-entity-collisions auf 2 und eine Spawner-Tick-Rate von 2.
- Starte Java mit Aikar’s Flags und einem Heap, der zum Server passt. Der RAM-Rechner schreibt dir beides.
- Generier die Welt vor mit einem Plugin wie Chunky, damit keine neuen Chunks generiert werden, während gespielt wird.
Ändere immer nur eine Sache und zeichne danach ein neues Profil auf. So weißt du, was geholfen hat und was du rückgängig machen musst, wenn eine Farm nicht mehr funktioniert.
Dein Profil und Datenschutz
Die Analyse läuft in deinem Browser: Das Profil wird direkt von spark.lucko.me geladen und geht nie über EndyStudio. Denk daran, dass ein spark-Profil die Config-Dateien deines Servers enthält (spark blendet Passwörter, IPs und ähnliche Keys aus) und dass jeder mit dem Link es öffnen kann.