Belirtiler: Sunucu genelinde yavaşlık, TPS 20 altında, bloklar gecikmeli kırılıyor, mobiler donuyor, chunk yavaş yükleniyor. Lag birden fazla sebepten (CPU, RAM, disk, ağ, plugin, entity) kaynaklanabilir. Bu rehber sistematik bir lag giderme pratiği sunar.

Olası Nedenler

  • Yetersiz donanım — CPU tek çekirdek performansı düşük, RAM az ya da disk HDD
  • Kötü Java ayarları — GC flag'leri yok, heap değeri uygunsuz
  • Kontrolsüz plugin — tick başına ağır işlem veya main thread'de DB sorgusu
  • Entity ve chunk overload — sınırsız world border, kontrolsüz mob farm'ları
  • Redstone devreleri — sürekli tetiklenen karmaşık devreler tick'i tıkar
  • Çok yüksek view-distance / simulation-distance değeri

Adım Adım Çözüm

1. Adım

Önce ölçün: /tps ile TPS, /spark tps ile ayrıntı, /spark profiler ile kök neden profili alın. Raporu KEYDAL Spark Analyzer'a yüklerseniz ücretsiz yorum alırsınız

bash
/spark profiler --thread * --timeout 60

2. Adım

view-distance ve simulation-distance değerlerini düşürün. 10 / 6 iyi bir başlangıçtır

bash
# server.properties
view-distance=10
simulation-distance=6

3. Adım

Hâlâ Spigot kullanıyorsanız Paper veya Purpur'a geçin. Paper; aynı donanımda %40–60 daha iyi performans verir

bash
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/latest/downloads/paper-1.21.1-latest.jar"

4. Adım

Aikar's Flags ile başlatın — GC davranışını Minecraft iş yüküne göre optimize eder. Heap değerini Xms=Xmx tutun

bash
java -Xms6G -Xmx6G -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:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar paper.jar --nogui

5. Adım

spigot.yml / paper.yml entity-activation-range değerlerini daraltın — uzaktaki mobiler tick tüketmez

bash
# spigot.yml
entity-activation-range:
  animals: 16
  monsters: 24
  raiders: 48
  misc: 8

6. Adım

Chunky plugin ile dünyayı önceden üretin. Runtime chunk generation ciddi lag üretir

bash
/chunky radius 5000
/chunky start

7. Adım

WorldBorder ayarlayıp keşif alanını sınırlayın — dünya dosyası şişmez ve chunk üretimi sabit kalır

bash
/worldborder center 0 0
/worldborder set 10000

8. Adım

Plugin tick süresine bakın: /spark profiler raporunda yüksek CPU tüketen plugini ya güncelleyin ya değiştirin

9. Adım

Disk HDD ise mutlaka SSD'ye geçin. Minecraft region I/O ağır iş yüküdür; NVMe ideal

bash
iostat -x 2 5  # await değerleri yüksekse disk darboğaz

10. Adım

TPS düşükse hemen restart yerine kök nedeni bulun — aksi halde yarın tekrar karşınıza çıkar