← Blog

Minecraft Server TPS verstehen: Warum dein Server ruckelt und wie du Lags dauerhaft beseitigst

Von Benjamin D. · PDG

· 7 Min. Lesezeit

Illustration zum Artikel: Minecraft Server TPS verstehen: Warum dein Server ruckelt und wie du Lags dauerhaft beseitigst
Inhaltsverzeichnis

Minecraft Server TPS sind der ehrlichste Leistungsindikator, den ein Admin hat: Bei 20 TPS wird jeder Tick innerhalb seines Zeitfensters von 50 Millisekunden abgeschlossen, alles darunter bedeutet, dass die Simulation hinterherhinkt. Ruckelnde Mobs, verzögerte Redstone-Schaltungen und Blöcke, die nach dem Abbauen zurückspringen, haben fast immer dieselbe Wurzel. Wo sie liegt und wie du sie beseitigst, klärt dieser Text.



Was TPS und MSPT über die Auslastung verraten

Die Spielwelt läuft in Ticks. Zwanzigmal pro Sekunde berechnet der Hauptthread Mobbewegungen, Redstone, Wasserfluss, Wachstum, Inventartransfers und Chunk-Verwaltung. Bleibt für einen Durchlauf mehr als 50 Millisekunden Rechenzeit nötig, sinkt die Tickrate: Die Welt läuft im Zeitlupenmodus, obwohl dein Ping perfekt ist.

MSPT ist der präzisere Wert

TPS deckeln bei 20 und zeigen deshalb keine Reserven an. MSPT (Millisekunden pro Tick) sagt dir, wie viel vom 50-ms-Budget tatsächlich verbraucht wird. Ein System mit 20 TPS und 45 MSPT steht kurz vor dem Kippen, eines mit 20 TPS und 12 MSPT hat Luft für doppelt so viele Spieler.

MSPTZustandHandlungsbedarf
unter 20gesund, viel Reservekeiner
20 bis 35solide ausgelastetbeobachten, Spitzen prüfen
35 bis 50am LimitEntities und View-Distance anfassen
über 50TPS-VerlustProfiler laufen lassen, Ursache isolieren

Wichtig ist die Unterscheidung zwischen dauerhaft schlechten Werten und kurzen Ausschlägen. Ein einzelner Spike beim Weltspeichern ist normal, ein Sägezahnmuster alle paar Sekunden deutet dagegen auf Garbage-Collection-Pausen oder eine Schleife in einem Plugin hin.



Tickrate messen: die Werkzeuge im Panel und in der Konsole

Bevor du Werte änderst, brauchst du Zahlen. Die Live-Konsole im NexusPanel gibt dir direkten Zugriff auf die Befehle, ohne dass du dich ingame einloggen musst. Wer seine Welt auf moderner Hardware betreiben will, findet die passenden Konfigurationen beim Minecraft Server mieten bereits vorbereitet.

Bordmittel von Paper und Spigot

/tps
/mspt
/gc

/tps liefert Durchschnittswerte über 1, 5 und 15 Minuten. /mspt zeigt auf Paper zusätzlich Median und Maximum der letzten Ticks. Weichen Durchschnitt und Maximum stark voneinander ab, suchst du keine dauerhafte Überlast, sondern ein wiederkehrendes Einzelereignis.

spark als Profiler

Für die eigentliche Ursachensuche führt an spark kein Weg vorbei. Das Plugin bzw. der Mod zeigt, welche Methode wie viel Tickzeit frisst, und erzeugt einen Report-Link zum Auswerten im Browser.

/spark health
/spark tps
/spark profiler start --timeout 300
/spark profiler stop

Lass den Profiler unter echter Last laufen, nicht auf einer leeren Welt. Fünf Minuten während der Primetime sagen mehr aus als eine Stunde nachts. Die Auswertung nach Plugin oder Mod sortiert dir die Verursacher direkt nach Anteil an der Gesamtzeit. Details zur Bedienung stehen in der offiziellen spark-Dokumentation.



Single-Core-Leistung schlägt Kernanzahl

Der Tick-Loop von Minecraft läuft auf einem einzigen Thread. Egal wie viele Kerne die Maschine hat: Die Weltsimulation nutzt genau einen davon voll aus. Ein Prozessor mit hohem Takt und großem Cache bringt deshalb mehr als ein Serverchip mit vielen langsamen Kernen.

Genau hier zahlt ein Ryzen 9 7950X3D ein. Der große L3-Cache hält Chunk- und Entity-Daten näher am Rechenkern, was bei der ständigen Iteration über Blocklisten spürbar hilft. DDR5-ECC-RAM reduziert zusätzlich Speicherfehler bei langen Laufzeiten, NVMe-SSDs nehmen dem Autosave die I/O-Wartezeit.

Was die übrigen Kerne trotzdem tun

  • Chunk-Generierung und Chunk-Laden werden auf modernen Paper- und Fabric-Builds teilweise ausgelagert
  • Netzwerk-I/O und Kompression laufen in eigenen Threads
  • Garbage Collection arbeitet parallel, sofern G1GC korrekt konfiguriert ist
  • Weltspeicherung schreibt asynchron, wenn sync-chunk-writes deaktiviert ist

Mehrere Welten oder Proxy-Netzwerke mit BungeeCord und Velocity profitieren dagegen sehr wohl von zusätzlichen Kernen, weil jede Instanz ihren eigenen Hauptthread mitbringt. Eine Übersicht über weitere unterstützte Titel findest du unter Alle unsere Gameserver.



RAM-Zuteilung: Vanilla, Paper, Fabric und Forge im Blick

Mehr Heap bedeutet nicht automatisch bessere Werte. Zu viel zugewiesener Speicher verlängert die Garbage-Collection-Pausen, und genau diese Pausen erzeugen die typischen Tick-Spikes. Die Zuteilung richtet sich nach Software und Inhalt, nicht nach dem verfügbaren Maximum.

SoftwareSzenarioÜbliche Zuteilung
VanillaFreundesrunde, kleine Welt2 bis 4 GB
Paper / Purpur20 bis 40 Spieler, Plugins6 bis 8 GB
Fabric mit Lithiumoptimierte Vanilla-Erfahrung4 bis 6 GB
Forge / NeoForgeModpack mit 150 Mods8 bis 10 GB
ForgeModpack mit 250+ Mods10 bis 14 GB

Startparameter richtig setzen

Setze -Xms und -Xmx auf denselben Wert. So muss die JVM den Heap nicht dynamisch vergrößern, was mitten im Betrieb Pausen erzeugt. Die G1GC-Flags von Aikar sind seit Jahren der Standard für Java 17 und neuer.

java -Xms8G -Xmx8G \
  -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 \
  -jar paper.jar nogui

Lass dem Betriebssystem immer Reserve. Wer den kompletten physischen Speicher an die JVM übergibt, riskiert Swapping, und Swapping ist für die Tickrate schlimmer als jeder schlecht programmierte Mod.



Chunk-Ladung, View-Distance und Simulation Distance

Jeder geladene Chunk bedeutet Arbeit pro Tick: Entities, Blockupdates, Fluidberechnungen, Mob-Spawns. Die Anzahl geladener Chunks skaliert quadratisch mit der Sichtweite, weshalb eine Reduktion von 12 auf 8 die Last drastischer senkt, als die Zahlen vermuten lassen.

Die beiden Distanzen trennen

Seit der Trennung von view-distance und simulation-distance kannst du Spielern weite Sicht geben, ohne die Simulation aufzublähen. Die Sichtweite überträgt nur Blockdaten, die Simulationsdistanz bestimmt, wo Mobs ticken, Pflanzen wachsen und Redstone rechnet.

# server.properties
view-distance=8
simulation-distance=5
network-compression-threshold=256
sync-chunk-writes=false
entity-broadcast-range-percentage=75
max-tick-time=60000

Welt vorgenerieren statt live erzeugen

Neue Chunks zu generieren gehört zu den teuersten Operationen überhaupt. Wenn Spieler mit Elytra oder Pferd in unerforschtes Gebiet vorstoßen, bricht die Tickrate regelmäßig ein. Erzeuge die Welt im Voraus und setze eine Worldborder, damit der Bereich endlich bleibt.

/chunky world world
/chunky radius 4000
/chunky start
/worldborder set 8000

Ergänzend lohnt sich ein Blick auf delay-chunk-unloads-by und max-auto-save-chunks-per-tick in der Paper-Konfiguration. Beide steuern, wie stark das Entladen und Speichern von Chunks den Hauptthread blockiert.



Typische Lag-Ursachen und ihre Gegenmaßnahmen

Die meisten Einbrüche lassen sich auf eine überschaubare Liste zurückführen. Die folgende Übersicht ordnet Symptom, Ursache und Gegenmaßnahme einander zu.

SymptomWahrscheinliche UrsacheGegenmaßnahme
TPS fallen nur in einem BereichMobfarm oder Item-StauEntity-Limits setzen, Hopper durch Wasserstrom ersetzen
Regelmäßige Spikes im SekundentaktRedstone-Uhr oder Piston-LoopChunk lokalisieren, Schaltung entschärfen
Sägezahn im MSPT-GraphGC-Pausen, Heap zu großXms=Xmx, G1GC-Flags, Zuteilung senken
Einbruch bei SpielerbewegungChunk-Generierung liveWelt vorgenerieren, Worldborder
Dauerhaft hohe MSPT ohne SpielerPlugin mit EndlosschleifeProfiler-Report auswerten, Plugin isolieren
Stottern alle paar MinutenAutosave, langsame DatenträgerSpeicherintervall anpassen, NVMe nutzen

Entities im Griff behalten

Herden aus Kühen, gestapelte Items und geladene Minecarts sind die häufigsten Fresser. Setze harte Grenzen, statt jedes Mal manuell aufzuräumen.

# paper-world-defaults.yml (Auszug)
entities:
  spawning:
    per-player-mob-spawns: true
    monster-spawns: 40
  entity-per-chunk-save-limit:
    experience_orb: 30
    arrow: 16
collisions:
  max-entity-collisions: 2
tick-rates:
  mob-spawner: 2

Plugins und Mods sauber halten

  • Ein Plugin pro Aufgabe: drei Systeme, die parallel Chunks scannen, verdoppeln die Last ohne Mehrwert
  • Dynmap, Logblock und ähnliche Datensammler mit reduziertem Intervall betreiben
  • Nach jedem Update den Profiler erneut laufen lassen, Regressionen sind häufig
  • Automatische Sicherungen einplanen, bevor du an Entity-Limits schraubst

Auf der Mod-Seite bringen Lithium, FerriteCore und Krypton auf Fabric spürbare Entlastung, ohne Spielmechaniken zu verändern. Für Paper dokumentiert die offizielle Paper-Dokumentation jede Option samt Auswirkung. Weitere Praxisanleitungen sammeln wir laufend im Nexus Games Blog.



Fazit

Fang immer mit einer Messung an, nie mit einer Vermutung. /mspt und ein spark-Report unter echter Last zeigen dir in fünf Minuten, ob Entities, Chunks, GC-Pausen oder ein einzelnes Plugin schuld sind. Der häufigste Fehler: einfach mehr RAM zuweisen. Das verlängert die GC-Pausen und verschlimmert das Ruckeln. Reduziere zuerst die Simulationsdistanz und begrenze Entities pro Chunk, danach optimierst du gezielt.



FAQ

Warum ruckelt es bei mir, obwohl die TPS bei 20 liegen?

Dann liegt das Problem im Netzwerk, nicht in der Simulation. Hoher Ping, Paketverlust oder eine schlechte Route zwischen deinem Anschluss und dem Rechenzentrum erzeugen Rubberbanding, während die Weltberechnung völlig gesund bleibt. Prüfe mit einem Traceroute, wo die Latenz entsteht, und schau dir die F3-Anzeige ingame an: Sie trennt Client-FPS von der Serverantwort. Auch eine zu niedrig gesetzte Kompressionsschwelle kann Pakete unnötig aufblähen.

Wie viele Spieler verkraftet eine Paper-Welt bei stabilen 20 TPS?

Das hängt weniger an der Spielerzahl als am Verhalten. Vierzig Spieler auf einem Survival-Areal mit gemeinsamer Spawnzone laufen oft flüssiger als fünfzehn Spieler, die alle in verschiedene Richtungen neue Chunks erkunden. Als Orientierung: Eine gut konfigurierte Paper-Welt mit Simulationsdistanz 5 und vorgenerierter Karte hält 40 bis 60 aktive Spieler, sofern keine Mega-Mobfarmen dauerhaft geladen sind.

Bringen geplante Neustarts wirklich etwas gegen sinkende TPS?

Ja, aber sie kurieren ein Symptom. Nach vielen Stunden Laufzeit sammeln sich fragmentierter Heap, verwaiste Entities und Speicherreste einzelner Plugins an, die Tickzeit steigt langsam. Ein täglicher Neustart in einer ruhigen Stunde setzt das zurück und dauert meist unter einer Minute. Wenn die Werte allerdings schon nach zwei Stunden einbrechen, liegt ein echtes Leck vor, das du mit dem Profiler suchen solltest.

Auch interessant

Minecraft-Server mieten

+10.000 Modpacks mit 1 Klick

ab 6,99€/Monat

Meinen Minecraft-Server mieten