Lag auf dem Minecraft-Server: Ursachen und Loesungen
Spieler beschweren sich ueber Lag. Bloecke brechen mit Verzoegerung, Mobs teleportieren herum, Items werden nicht aufgehoben. Sie pruefen die Konsole und alles scheint in Ordnung - Speicher nicht voll, CPU nicht bei 100%. Aber der Lag ist da. Was passiert hier?
Wenn Sie ein Minecraft-Server-Admin sind und herausfinden wollen, warum Ihr Server ruckelt, ist dieser Artikel fuer Sie. Kein Gerede, keine allgemeinen Ratschlaege. Konkrete Ursachen, konkrete Tools, konkrete Configs.
Was ist TPS und warum es die wichtigste Metrik ist
TPS steht fuer Ticks Per Second. Ein Minecraft-Server laeuft in einer Schleife: Jeden Tick verarbeitet er alles, was in der Welt passiert. Mob-Bewegung, Pflanzenwachstum, Redstone-Updates, Spieler-Paketverarbeitung. Idealerweise passieren 20 Ticks pro Sekunde. Ein Tick = 50 Millisekunden.
- 20 TPS - alles in Ordnung, Server kommt mit
- 18-19 TPS - minimaler Einbruch, Spieler merken es kaum
- 15-17 TPS - spuerbar, Mobs bewegen sich ruckartig
- 10-14 TPS - ernsthafter Lag, Gameplay wird unangenehm
- Unter 10 TPS - Server ist kaum am Leben
Aktuellen TPS pruefen mit /tps (Spigot/Paper) oder ueber spark.
Wichtig: TPS kann nicht ueber 20 steigen. Wenn Sie 20.0 TPS haben, heisst das nicht, dass der Server im Leerlauf ist. Es bedeutet, dass er einen Tick innerhalb von 50 ms abarbeitet. Um die tatsaechliche Last zu verstehen, schauen Sie auf MSPT - Millisekunden pro Tick.
/spark tps
/spark health
MSPT von 30 ms bei 20 TPS bedeutet, Sie haben 20 ms Spielraum. MSPT von 48 ms - immer noch 20 TPS, aber Sie sind am Limit. Etwas mehr Last und TPS faellt.
Spark: Ihr wichtigstes Diagnose-Tool
Vergessen Sie das eingebaute Timings in Paper. Es ist veraltet und liefert weniger Informationen. Installieren Sie spark - ein Profiler, der genau zeigt, was Ressourcen frisst.
Installation
Laden Sie die jar von spark.lucko.me herunter und legen Sie sie in den plugins/-Ordner. Server neustarten.
Grundlegende Verwendung
/spark profiler start -- Profil-Aufzeichnung starten
Warten Sie 2-5 Minuten, waehrend der Server unter normaler Last laeuft. Dann:
/spark profiler stop -- Stoppen und Link erhalten
Spark gibt Ihnen einen Link zu einem Bericht. Oeffnen Sie ihn im Browser. Sie sehen einen Aufrufbaum - welche Funktionen wie viel Zeit brauchen. Suchen Sie die schwersten Aeste.
Worauf Sie achten sollten
- Entity tick - Entitaetsverarbeitung. Wenn dies ueber 30-40% der Zeit einnimmt, haben Sie zu viele Mobs oder ein schlecht optimiertes Plugin
- Chunk loading/generation - Chunk-Generierung und -Laden. Wenn dies Platz eins im Profil ist, generieren Sie Ihre Welt vor
- Plugin-Handler - spark zeigt konkrete Plugins und deren Event-Handler. Oft kann ein schlecht geschriebenes Plugin den gesamten Server lahmlegen
- Scheduled tasks - synchrone Aufgaben blockieren den Haupt-Tick
Ursache 1: Zu viele Entitaeten
Dies ist die haeufigste Ursache fuer Lag. Entitaeten umfassen Mobs, gedropte Items, Pfeile, Rahmen, Loren, Ruestungsstaender. Jede Entitaet wird jeden Tick verarbeitet.
1000 Kuehe in einem Gehege? Herzlichen Glueckwunsch, Sie haben eine Lag-Maschine gebaut.
Diagnose
/spark tickmonitor
Oder pruefen Sie ueber:
/minecraft:debug entities
Loesung
In paper-world-defaults.yml (Paper 1.19+):
entities:
spawning:
monster-spawn-range: 6 # Standard 8
creative-arrow-despawn-rate: 60
non-player-arrow-despawn-rate: 60
In spigot.yml:
entity-activation-range:
animals: 16 # Standard 32
monsters: 24 # Standard 32
raiders: 48
misc: 8 # Standard 16
water: 8 # Standard 16
villagers: 16 # Standard 32
flying-monsters: 32 # Standard 32
tick-inactive-villagers: false
wake-up-inactive:
animals-max-per-tick: 4
animals-every: 1200
animals-for: 100
monsters-max-per-tick: 8
monsters-every: 400
monsters-for: 100
Die Entity Activation Range bestimmt, wie weit von einem Spieler entfernt Entitaeten einen vollen Tick erhalten. Ausserhalb dieses Radius werden sie seltener geticktet - enorme Einsparungen.
Item-Drops
Auf dem Boden liegende Items sind ebenfalls Entitaeten. Konfigurieren Sie den Despawn:
# spigot.yml
item-despawn-rate: 3000 # Standard 6000 (5 Minuten), setzen auf 2.5 Minuten
Installieren Sie ClearLagg oder schreiben Sie ein einfaches Skript, das Drops alle 5 Minuten bereinigt. Warnen Sie Spieler 30 Sekunden vorher.
Ursache 2: Chunk-Loading und Generierung
Wenn sich ein Spieler bewegt, muss der Server neue Chunks laden. Wenn Chunks noch nicht generiert wurden, muessen sie erstellt werden. Chunk-Generierung ist eine der schwersten Operationen.
Welt vorgenerieren
Verwenden Sie Chunky zur Vorgenerierung:
/chunky radius 5000
/chunky start
Lassen Sie es ueber Nacht laufen. Die Vorgenerierung eines 5000-Block-Radius vom Spawn dauert mehrere Stunden, aber danach loesen neue Spieler keine Generierung mehr aus.
view-distance und simulation-distance
Dies sind Ihre maechtigsten Optimierungshebel. In server.properties:
view-distance=7
simulation-distance=4
view-distance - wie viele Chunks um einen Spieler an den Client gesendet werden. Standard ist 10, aber 7-8 reicht fuer die meisten Server voellig aus.
simulation-distance - wie viele Chunks um einen Spieler tatsaechlich geticktet werden (Mobs bewegen sich, Redstone funktioniert, Pflanzen wachsen). Dies ist die kritische Einstellung. Eine Reduzierung von 10 auf 4-5 senkt die Last drastisch.
Wichtig: simulation-distance muss kleiner oder gleich view-distance sein. Spieler sehen die Chunks, aber in entfernten Chunks passiert nichts. Fuer die meisten Spieler ist das akzeptabel.
Ursache 3: Redstone
Automatisierte Redstone-Farmen sind der Schmerz jedes Servers. Ein einziger Endlos-Taktgeber kann die TPS des gesamten Servers in den Keller ziehen.
Paper-Limits
# paper-world-defaults.yml
redstone-implementation: ALTERNATE_CURRENT
ALTERNATE_CURRENT - eine alternative Redstone-Update-Implementierung, deutlich schneller als Vanilla. Einige sehr komplexe Konstruktionen koennten kaputtgehen, aber fuer 99% der Anwendungsfaelle ist es perfekt.
Hopper- und Kolben-Limits
# paper-world-defaults.yml
hopper:
cooldown-when-full: true
disable-move-event: false
ignore-occluding-above: false
Hopper sind einer der teuersten Bloecke fuer die Performance. cooldown-when-full: true reduziert die Last durch volle Hopper erheblich.
Ursache 4: Plugins
Schlecht geschriebene Plugins sind die zweithaeufigste Lag-Ursache nach Entitaeten. Typische Probleme:
- Synchrone Datenbankabfragen. Ein Plugin fuehrt eine SQL-Abfrage im Hauptthread aus, und waehrend es auf die Antwort wartet, steht der gesamte Server still. Das ist ein TPS-Killer. Verwenden Sie nur Plugins von vertrauenswuerdigen Entwicklern
- Schwere Event-Handler. Ein Plugin auf PlayerMoveEvent, das jeden Tick komplexe Pruefungen fuer jeden Spieler durchfuehrt
- Speicherlecks. Ein Plugin erstellt Objekte, raeumt sie aber nie auf. Mit der Zeit gerät der GC in Panik
Wie man das problematische Plugin findet
Spark zeigt dies direkt im Profil. Aber es geht auch einfacher - deaktivieren Sie Plugins einzeln (binaere Suche) und beobachten Sie die TPS.
Wenn Sie ein bestimmtes Plugin verdaechtigen:
/spark profiler start --only-ticks-over 50
Dies zeichnet ein Profil nur fuer Ticks auf, die laenger als 50 ms dauerten (also TPS-Einbrueche verursachten). Im Bericht sehen Sie genau, was laggt.
Ursache 5: Garbage Collection (GC)
Java verwendet einen Garbage Collector zur Speicherverwaltung. Wenn der GC laeuft, kann er den gesamten Server kurz anhalten. Wenn Sie 16 GB RAM zugewiesen haben und der GC schlecht konfiguriert ist, koennen Pausen 200-500 ms erreichen. Das sind 4-10 verlorene Ticks auf einmal.
Aikars Flags
Aikar (ein Paper-Entwickler) hat einen Satz JVM-Flags zusammengestellt, die fuer Minecraft optimiert sind. Verwenden Sie diese:
Fuer Server mit 12 GB RAM oder weniger:
java -Xms10G -Xmx10G -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:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 \
-jar server.jar --nogui
Wichtige Punkte:
- -Xms und -Xmx sind gleich - das ist wichtig. Java verschwendet keine Zeit mit Heap-Groessenaenderungen
- -XX:+UseG1GC - G1-Collector, optimal fuer Minecraft
- -XX:MaxGCPauseMillis=200 - Ziel-GC-Pause nicht laenger als 200 ms
- -XX:G1NewSizePercent=30 und G1MaxNewSizePercent=40 - Minecraft erstellt viele kurzlebige Objekte, daher ist die Young Generation vergroessert
Wie viel RAM zuweisen
Ein haeufiger Fehler ist zu viel RAM zuzuweisen. 32 GB fuer einen 50-Spieler-Server ist uebertrieben. Je groesser der Heap, desto laenger die GC-Pause.
Richtwerte:
- Vanilla/Paper bis 20 Spieler: 4-6 GB
- Paper 20-50 Spieler: 6-10 GB
- Paper 50-100 Spieler mit Plugins: 10-14 GB
- Forge mit Mods: abhaengig vom Modpack, aber starten Sie mit 8 GB
Paper und Purpur: Was man einstellen sollte
Wenn Sie noch auf Spigot sind - wechseln Sie zu Paper. Wenn Sie auf Paper sind - schauen Sie sich Purpur an. Jedes fuegt Optimierungen hinzu, die in Vanilla nicht vorhanden sind.
paper-global.yml
chunk-system:
gen-parallelism: default
io-threads: 4
worker-threads: 4
async-chunks:
threads: 4
paper-world-defaults.yml
entities:
spawning:
per-player-mob-spawns: true
alt-item-despawn-rate:
enabled: true
items:
cobblestone: 300
netherrack: 300
sand: 300
gravel: 300
dirt: 300
short_grass: 300
kelp: 300
bamboo: 300
environment:
treasure-maps:
enabled: true
find-already-discovered:
loot-tables: true
villager-trade: true
optimize-explosions: true
tick-rates:
mob-spawner: 2
sensor:
villager:
secondarypoisensor: 80
behavior:
villager:
validatenearbypoi: -1
per-player-mob-spawns: true - statt eines globalen Mob-Limits wird das Limit pro Spieler gezaehlt. Ein Spieler mit einer riesigen Farm verbraucht nicht das gesamte Mob-Budget des Servers.
alt-item-despawn-rate - Muell-Bloecke (Kopfsteinpflaster, Erde) verschwinden schneller. Spieler merken es nicht, aber es gibt weniger Entitaeten auf dem Server.
optimize-explosions: true - optimierter Explosionsalgorithmus. Immer aktivieren.
Zusaetzliche server.properties
network-compression-threshold=256
max-tick-time=-1
network-compression-threshold=256 - Pakete groesser als 256 Bytes komprimieren. Standard ist ebenfalls 256, aber stellen Sie sicher, dass der Wert gesetzt ist.
max-tick-time=-1 - deaktiviert den Watchdog, der den Server bei langen Ticks beendet. In der Produktion ist dies umstritten, aber es verhindert Notfall-Neustarts bei kurzen Lag-Spitzen.
Wenn Lag kein Lag ist - sondern ein Angriff
Manchmal haben Sie alles optimiert, TPS ist stabil bei 20, aber Spieler beschweren sich trotzdem ueber Lag. Oder umgekehrt - TPS faellt ploetzlich auf 5, obwohl sich nichts geaendert hat.
Mehrere Anzeichen, dass es kein normaler Lag ist:
- Ploetzlicher TPS-Einbruch ohne sichtbare Ursache - niemand ist beigetreten, keine neuen Plugins, aber TPS ist eingebrochen
- Netzwerk-Timeouts - Spieler koennen sich nicht verbinden oder werden mit "Timed out" gekickt
- Hohe Netzwerklast bei normaler CPU-Auslastung
- Massenhafte Verbindungsversuche - Dutzende oder Hunderte Verbindungsversuche pro Sekunde in den Logs
Dies koennte ein DDoS- oder Bot-Angriff sein. Ein Netzwerkangriff flutet die Leitung oder ueberlastet den Server mit gefaelschten Verbindungen, und es sieht aus wie Lag, obwohl Minecraft selbst normal laeuft.
Wenn Sie diese Symptome beobachten, helfen Configs nicht weiter. Sie brauchen Traffic-Filterung auf Netzwerkebene. Genau dafuer gibt es Dienste wie MineGuard - sie filtern den Traffic, bevor er Ihren Server erreicht, und schneiden unerwuenschte Verbindungen ab. Wenn Sie bereits angegriffen wurden oder sich praeventiv schuetzen wollen, lohnt es sich, solchen Schutz einzurichten.
Optimierungs-Checkliste
Fassen wir zusammen. Hier ist der Aktionsplan bei Lag:
- TPS und MSPT pruefen ueber
/spark tps- Ausmass des Problems verstehen - spark Profiler starten - herausfinden, was genau laggt
- Entitaeten-Anzahl pruefen - die haeufigste Ursache
- Entity Activation Range konfigurieren in
spigot.yml - simulation-distance senken auf 4-5
- Paper-Optimierungen aktivieren -
optimize-explosions,per-player-mob-spawns,alt-item-despawn-rate - ALTERNATE_CURRENT verwenden fuer Redstone
- Aikars Flags anwenden fuer die JVM
- Welt vorgenerieren mit Chunky
- Plugins pruefen ueber spark auf schwere Event-Handler
Wenn das Problem nach allen Optimierungen bestehen bleibt, pruefen Sie, ob Ihr Server angegriffen wird. Netzwerkprobleme lassen sich nicht mit Minecraft-Configs loesen.
Schützen Sie Ihren Server vor DDoS-Angriffen
Kostenloser Schutz mit 5-Minuten-Einrichtung. 1 TB Traffic inklusive.
Kostenlos testenWeitere Artikel
DecentHolograms vs Holographic Displays: welches Hologramm-Plugin 2026 wählen
Holographic Displays war zehn Jahre lang Standard, dann brach es auf 1.20+ wegen der ProtocolLib-Kette. DecentHolograms läuft ohne und ist heute die Standardwahl. Wir vergleichen Features, Migration und echte Configs.
Proxy Protocol für Minecraft: Wozu es nötig ist und wie man es einrichtet
Proxy Protocol bewahrt die echten IP-Adressen der Spieler, wenn der Server hinter einem Reverse Proxy oder DDoS-Schutz läuft.
Pterodactyl vs Crafty vs MCSManager: Minecraft-Panel-Vergleich 2026
Pterodactyl, Crafty Controller und MCSManager im Vergleich 2026: Architektur, Installation, Sicherheit, Backups und welches Panel wann passt.