Minecraft Server Performance Master-Guide 2025: Vom Laggy-Server zur Hochleistungsmaschine
Zurück
Du kämpfst mit TPS-Einbrüchen, Spieler-Laggs oder unerklärlichen Performance-Problemen? Dieser ultimative Guide zeigt dir jeden Schritt – von der Diagnose bis zur fortgeschrittenen Optimierung – um deinen Minecraft-Server in eine Hochleistungsmaschine zu verwandeln. Basierend auf jahrelanger Erfahrung mit tausenden Servern.
📊 KAPITEL 1: Diagnose – Wo genau liegt das Problem?
Bevor du optimierst, musst du genau wissen, WAS laggt. Minecraft hat drei Haupt-Lag-Arten:
1.1 TPS-Lag (Server-Lag)
mc
/tps # Idealer Output: "20.0, 20.0, 20.0" # Kritisch: "15.2, 14.8, 13.5"
Interpretation:
-
20.0: Perfekt
-
18.0-19.9: Leichte Probleme
-
15.0-17.9: Spürbare Laggs
-
<15.0: Unspielbar
1.2 MSPT (Milliseconds Per Tick)
mc
/mspt # Idealer Wert: <50ms # Kritisch: >100ms
Das bedeutet:
-
<20ms: Exzellent
-
20-50ms: Gut
-
50-100ms: Probleme
-
>100ms: Kritisch (max 10 TPS möglich!)
1.3 Professionelle Profiling Tools 2025
a) Spark (Essential für Paper)
mc
/spark sampler --interval 30s /spark heapdump /spark gcmonitor
→ Zeigt dir genaue CPU-Auslastung pro Plugin/Entity
b) timings v2 (Bukkit/Paper)
mc
/timings paste
→ Detaillierte Analyse aller Tick-Aktivitäten
c) Chunky (Chunk-Analyse)
mc
/chunky info /chunky cancel
→ Findet korrupte oder laggy Chunks
⚙️ KAPITEL 2: Java-Optimierung 2025 (Der größte Hebel!)
2.1 Java-Version wählen (2025 Update)
-
Java 17: Stabilste für Paper 1.20+
-
Java 21: 5-10% Performance-Boost, aber weniger getestet
-
Java 8: NUR für alte Modpacks (<1.12.2)
2.2 Optimierte JVM-Flags für verschiedene Szenarien
A) Paper/Spigot Server (1.20+) – Standard-Optimierung
bash
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \ -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \ -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapRegionSize=8M \ -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 \ -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \ -XX:InitiatingHeapOccupancyPercent=15 \ -XX:G1MixedGCLiveThresholdPercent=90 \ -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 \ -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \ -XX:TargetSurvivorRatio=90 -XX:+UseStringDeduplication \ -XX:+UseCompressedOops -XX:+UseCompressedClassPointers \ -XX:CompressedClassSpaceSize=1G -XX:+UseFastUnorderedTimeStamps \ -XX:+UseAES -XX:+UseAESIntrinsics -XX:UseSSE=4 \ -XX:AllocatePrefetchStyle=1 -XX:+UseLoopPredicate \ -XX:+RangeCheckElimination -XX:+EliminateLocks \ -XX:+DoEscapeAnalysis -XX:+UseTypeSpeculation \ -XX:+UseNUMA -XX:+UseFPUForSpilling \ -XX:+UseVectorCmov -XX:+UseXMMForArrayCopy \ -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2M \ -XX:+UseLargePages -Dfile.encoding=UTF-8 \ -jar paper-1.20.4.jar nogui
B) Modpack Server (Forge/Fabric) – Alternative Flags
bash
java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions \ -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC \ -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 \ -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 \ -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled \ -XX:+UseStringDeduplication -Dfml.readTimeout=180 \ -jar forge-1.20.1.jar nogui
2.3 Die Xms/Xmx-Falle verstehen
bash
# FALSCH (verursacht GC-Laggs): java -Xms2G -Xmx10G ... # RICHTIG (keine dynamische Allokation): java -Xms10G -Xmx10G ...
Warum gleich? Dynamische RAM-Allokation verursacht Garbage Collection Spikes!
2.4 Garbage Collector Vergleich 2025
| GC-Type | Für Server-Typ | Vorteile | Nachteile |
|---|---|---|---|
| G1GC | Paper/Modpacks | Balanciert, wenig Pausen | Komplexe Konfig |
| ZGC | >32GB RAM | Ultra-low Pausen | Nur Java 15+, experimentell |
| Shenandoah | Modpacks | Gute Pausenzeit | Etwas langsamer |
| Parallel | Vanilla | Einfach | Lange Pausen |
🏗️ KAPITEL 3: Paper/Spigot Konfiguration (YML-Optimierung)
3.1 paper.yml – Kritische Sektionen
Chunk-System (Reduziert Chunk-Loading-Laggs)
yaml
chunks: max-auto-save-chunks-per-tick: 6 fixed-chunk-inhabited-time: -1 delay-chunk-unloads-by: 10s enable-frustum-chunk-priority: true global-max-chunk-load-rate: 500.0 player-max-chunk-load-rate: 100.0 max-concurrent-chunk-loads: 20 chunk-load-override: none
Entity-Aktivierung (Massiver Performance-Boost)
yaml
entity:
per-player-mob-spawns: true
entities:
spawning:
spawn-limits:
ambient: 15
axolotls: 10
water_ambient: 20
water_underground_creature: 5
creature: 30
monster: 70
water_creature: 15
Redstone-Optimierung (Verhindert Redstone-Laggs)
yaml
hopper: disable-move-event: false cooldown-when-full: true transfer-tick-rate: 8 redstone: disable-op-bucket: true piston-entity-collision: false
3.2 spigot.yml – World-Spezifische Einstellungen
yaml
world-settings:
default:
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 48
tick-inactive-villagers: false
mob-spawn-range: 4
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
3.3 bukkit.yml – View-Distance Management
yaml
settings: allow-end: true warn-on-overload: true permissions-file: permissions.yml update-folder: update plugin-profiling: false connection-throttle: -1 query-plugins: true deprecated-verbose: default shutdown-message: Server closed spawn-limits: monsters: 70 animals: 15 water-animals: 5 water-ambient: 20 ambient: 15 chunk-gc: period-in-ticks: 600
🧩 KAPITEL 4: Plugin-Optimierung & Auswahl
4.1 Performance-Killer Plugins erkennen
Mit Spark analysieren:
mc
/spark sampler --thread * --interval 30s # Suche nach: # - "com.sk89q.worldguard" (oft langsam) # - "Vault" (Economy-Plugins) # - "Essentials" (bei vielen Commands)
4.2 Essential Performance-Plugins 2025
| Plugin | Zweck | Performance-Impact |
|---|---|---|
| Spark | Profiling & Monitoring | Negligible |
| ClearLag | Entity/Item Cleaning | Positiv |
| Chunky | Chunk Loading Control | Positiv |
| ViaVersion | Cross-Version Support | Mittel |
| Plan | Analytics & Monitoring | Sehr gering |
| CoreProtect | Block Logging | Mittel (je nach Nutzung) |
4.3 Plugin-Konfiguration optimieren
ClearLag Beispiel (aggressiv optimiert):
yaml
Clearlag: remove-ground-items: true ground-item-remove-time: 300 check-time-in-seconds: 60 remove-minecarts: true remove-boats: true remove-animals: false kill-mounted-mobs: true mob-removal-interval: 600
🗺️ KAPITEL 5: Welt-Optimierung & Chunk-Management
5.1 Chunk-Loading Strategien
Pre-generiere deine Welt:
mc
# Mit Chunky Plugin /chunky start world 3000 # Erzeugt 3000x3000 Blöcke vor
Alternativ mit WorldBorder:
mc
/wb world set 3000 /wb fill 200
5.2 Laggy Chunks finden & reparieren
ChunkAnalyzer nutzen:
mc
/chunk analyze --threshold 50 # Findet Chunks mit >50 Entities
Korrupte Chunks reparieren:
-
Backup der Welt erstellen
-
MCA Selector (externes Tool) nutzen
-
Nur korrupte Chunks löschen
-
Mit Chunky neu generieren
5.3 Redstone-Laggs eliminieren
Problemquellen:
-
Quarries (automatische Minen)
-
Redstone-Clocks (schnelle Ticker)
-
Mob-Farms mit vielen Entities
-
Item-Sorters mit vielen Hopper
Lösungen:
yaml
# In paper.yml redstone: disable-piston-griefing: false piston-push-limit: 12
💾 KAPITEL 6: RAM-Management & Allokation
6.1 Die perfekte RAM-Menge finden
| Server-Typ | 5-10 Spieler | 20-30 Spieler | 50+ Spieler |
|---|---|---|---|
| Vanilla | 2-4 GB | 4-6 GB | 6-8 GB |
| Paper mit Plugins | 4-6 GB | 6-8 GB | 8-12 GB |
| Modpacks (Light) | 6-8 GB | 8-10 GB | 10-12 GB |
| Modpacks (Heavy) | 8-10 GB | 10-12 GB | 12-16 GB |
6.2 RAM-Überwachung & GC-Tuning
Garbage Collection überwachen:
bash
# JVM Flags für GC-Logging -XX:+PrintGCDetails -XX:+PrintGCDateStamps \ -Xloggc:gc.log -XX:+UseGCLogFileRotation \ -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M
GC-Logs analysieren:
bash
# Nach langen Pausen suchen grep "Full GC" gc.log # Idealer Wert: <200ms Pause
🔄 KAPITEL 7: Fortgeschrittene Techniken
7.1 Multi-World Performance
Problem: Jede zusätzliche Welt kostet Performance
Lösung:
yaml
# In paper.yml
world-settings:
world_nether:
environment: NETHER
keep-spawn-loaded: false
world_the_end:
environment: THE_END
keep-spawn-loaded: false
7.2 Network & Connection Optimierung
yaml
# server.properties network-compression-threshold: 256 rate-limit: 0 max-tick-time: 60000
7.3 Automatische Performance-Skripte
Daily Maintenance Script:
bash
#!/bin/bash
# minecraft_maintenance.sh
SERVER_DIR="/opt/minecraft"
SCREEN_NAME="mcserver"
# 1. Save world
screen -S $SCREEN_NAME -X stuff "save-all\n"
sleep 5
# 2. Clear items
screen -S $SCREEN_NAME -X stuff "lag clear items\n"
# 3. Restart if TPS low
TPS=$(screen -S $SCREEN_NAME -X stuff "tps\n" && sleep 2)
if [[ $TPS < 15 ]]; then
screen -S $SCREEN_NAME -X stuff "restart\n"
fi
# 4. Backup
tar -czf /backups/mc-$(date +%Y%m%d).tar.gz $SERVER_DIR/world
📈 KAPITEL 8: Monitoring & Alerting
8.1 Echtzeit-Monitoring mit Grafana + Prometheus
Setup:
-
mc-exporter auf Server installieren
-
Prometheus konfigurieren
-
Grafana Dashboard einrichten
Metriken überwachen:
-
TPS (20 = Ideal)
-
MSPT (<50ms = Ideal)
-
Player Count
-
Chunk Loads
-
Entity Count
8.2 Discord Alerts einrichten
python
# discord_alert.py
import requests
import subprocess
WEBHOOK_URL = "your_webhook_here"
def check_tps():
result = subprocess.run(['mc-tps-check'], capture_output=True)
tps = float(result.stdout)
if tps < 16:
send_alert(f"⚠️ TPS Warning: {tps}")
def send_alert(message):
requests.post(WEBHOOK_URL, json={"content": message})
🚀 KAPITEL 9: Wann ein Upgrade wirklich nötig ist
9.1 Upgrade-Checkliste
-
TPS konstant < 16 trotz Optimierung
-
RAM immer >90% Auslastung
-
CPU konstant >80% Auslastung
-
Spieler beschweren sich regelmäßig
-
Alle oben genannten Optimierungen durchgeführt
9.2 Upgrade-Strategie
-
Mehr RAM zuerst (bis 12-16GB für Paper)
-
Bessere CPU (höhere Single-Core Performance)
-
NVMe SSD (für Chunk Loading)
-
Dedicated Server (bei >50 Spielern)
📋 KAPITEL 10: Quick-Start Performance Checklist
Jeden neuen Server durchgehen:
Basis-Check (10 Minuten)
-
Java 17+ installiert
-
Xms = Xmx gesetzt
-
view-distance: 8
-
simulation-distance: 6
-
G1GC aktiviert
Erweiterte Optimierung (30 Minuten)
-
paper.yml entity-limits gesetzt
-
Spark installiert
-
ClearLag konfiguriert
-
Chunky pre-generierung gestartet
-
Backup-System eingerichtet
Fortgeschritten (1 Stunde)
-
GC-Logs aktiviert
-
Monitoring eingerichtet
-
Wartungs-Skripte erstellt
-
Discord Alerts konfiguriert
🎯 ABSCHLUSS: Die Performance-Philosophie
Performance ist kein Zufall, sondern System. Die meisten Server benötigen kein Upgrade, sondern nur die richtige Konfiguration. Bevor du mehr Geld ausgibst:
-
Messen (TPS, MSPT, RAM)
-
Analysieren (Spark, Timings)
-
Optimieren (Java, YMLs, Plugins)
-
Monitorieren (Alerts, Logs)
Ein gut optimierter Server kann mit 50% weniger Ressourcen laufen als ein schlecht konfigurierter.
Du hast spezifische Performance-Probleme oder möchtest deine Konfiguration prüfen lassen? Unser Support-Team analysiert gerne deinen Server und gibt dir maßgeschneiderte Optimierungsvorschläge – kostenlos für unsere Kunden.
Weitere Blogartikel
Du suchst nach einem neuen Server oder Webhosting und wirst von günstigen Lockangeboten überschüttet? Vorsicht – was auf den ersten Blick wie ein Schnäppchen aussieht, kann langfristig zu einer teuren Überraschung werden. Wir zeigen d...
Was ist eigentlich... Webspace? Einfach erklärt (nicht nur für Oma!) Hast du schon mal von Webspace gehört und gedacht: "Was soll das sein?" Keine Sorge, du bist nicht allein. Viele Leute wissen nicht, was das ist - dabei nutzen sie es jeden Tag....
Du hast bereits erste Erfahrungen mit Minecraft Servern gesammelt und möchtest jetzt deinen eigenen, professionellen Server aufsetzen? Egal ob du mit Mods, Plugins oder im klassischen Vanilla-Stil spielen willst – dieser Guide führt dich durch die wichtigsten...