Minecraft Sunucu Optimizasyonu: Eksiksiz TPS & Performans Rehberi

JVM flags, server.properties, paper.yml, spigot.yml, bukkit.yml, pre-generation, Spark profiling — tüm optimizasyon ayarları detaylı açıklamalı.

50 dk okuma

# TPS ve Tick Loop

Minecraft sunucusu saniyede tam 20 tick işler. Her tick 50 milisaniye içinde tamamlanmalıdır. Tick süresi 50ms'yi aşarsa sunucu yavaşlar — buna lag denir.

TPS (Ticks Per Second): İdeal değer 20.0'dır. 19 üzeri iyi, 18 altı hissedilir lag, 15 altı ciddi sorun demektir.
MetrikİdealKabul EdilebilirSorunlu
TPS20.018-20<15
MSPT (ms/tick)<30ms30-50ms>50ms
Spark sleep %>80%20-80%<5%

Tick döngüsünde sırasıyla işlenen: oyuncu hareketi, entity AI, redstone, blok tikleri, chunk yükleme, ağ paketleri. Herhangi birinde darboğaz = TPS düşüşü.

# JVM Flags (Başlatma Parametreleri)

JVM flags sunucunun Java sanal makinesini nasıl kullanacağını belirler. Doğru flags ile GC (Garbage Collection) duraklamaları minimize edilir.

# Aikar's Flags (Standart)

Minecraft sunucuları için altın standart. Çoğu sunucu için önerilen:

bash
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: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
Xms ve Xmx aynı değerde olmalı! Farklı değerler runtime'da heap resize'a neden olur ve stutter yaratır.

# Flag Açıklamaları

FlagDeğerAçıklama
-Xms/-Xmx8GMin/max heap boyutu (eşit olmalı)
-XX:+UseG1GCG1 garbage collector kullan
-XX:MaxGCPauseMillis200Hedef GC duraklama süresi (ms)
-XX:+AlwaysPreTouchBaşlangıçta tüm RAM'i ayır
-XX:G1NewSizePercent30Young gen min boyutu (%)
-XX:G1MaxNewSizePercent40Young gen max boyutu (%)
-XX:G1HeapRegionSize8MHeap bölge boyutu (12GB+ için 16M)
-XX:G1ReservePercent20Acil durum için ayrılan heap (%)
-XX:MaxTenuringThreshold1Objeleri 1 GC sonra old gen'e taşı
-XX:SurvivorRatio32Survivor space oranı

# RAM Önerileri

Oyuncu SayısıÖnerilen RAMNot
1-102-4 GBVanilla veya az plugin
10-304-6 GBOrta düzey plugin
30-606-10 GBÇok plugin + dünya
60-10010-14 GBYoğun sunucu
100+16+ GBDedicated sunucu gerekli
RAM'in %70'ini Minecraft'a ayırın, geri kalanı OS ve diğer servisler için bırakın. Örneğin 8GB VPS'te -Xmx6G kullanın.

# server.properties

Sunucunun temel yapılandırma dosyası. Performans için kritik ayarlar:

AyarVarsayılanÖnerilenAçıklama
view-distance106-7Oyuncuya gönderilen chunk mesafesi
simulation-distance104-5Aktif olarak işlenen chunk mesafesi
network-compression-threshold256256Paket sıkıştırma eşiği (byte)
max-tick-time6000060000Watchdog timeout (ms)
spawn-protection1616Spawn koruma yarıçapı
simulation-distance çok düşürürseniz farmlar çalışmaz. 4-5 arası dengelidir. view-distance'ı düşürmek en etkili optimizasyondur.

# paper-global.yml

# Chunk Yükleme

yaml
chunk-loading-basic:
  autoconfig-send-distance: true
  player-max-concurrent-chunk-generates: 0
  player-max-concurrent-chunk-loads: 0

# Paket Limiter

yaml
packet-limiter:
  all-packets:
    action: KICK
    interval: 7.0
    max-packet-rate: 500.0
  overrides:
    ServerboundPlaceRecipePacket:
      action: DROP
      interval: 4.0
      max-packet-rate: 5.0

# Collision

yaml
collisions:
  enable-player-collisions: false  # CPU tasarrufu
  send-full-pos-for-entity-teleport: true

# paper-world.yml (Dünya Ayarları)

En çok performans etkisi olan ayarlar burada. Her dünya için ayrı yapılandırılabilir.

# Entity Activation Range

Entity'lerin AI işlemesinin yapıldığı mesafe. Düşük = daha az CPU kullanımı:

yaml
entity-activation-range:
  animals: 16
  monsters: 24
  raiders: 48
  misc: 8
  water: 8
  villagers: 32
  flying-monsters: 32
Bu değerler entity'nin AI'ını kapatmaz, sadece yavaşlatır. Uzaktaki moblar hala görünür ama hareket etmez.

# Despawn Ayarları

yaml
despawn-ranges:
  monster:
    soft: 30    # Bu mesafede rastgele despawn şansı
    hard: 56    # Bu mesafede anında despawn
  creature:
    soft: 30
    hard: 56
  misc:
    soft: 28
    hard: 48

# Spawn Limitleri

yaml
spawn-limits:
  monsters: 30      # Varsayılan 70 — yarıya düşür
  animals: 8
  water-animals: 3
  water-ambient: 3
  water-underground-creature: 3
  axolotls: 3
  ambient: 1

# Merge Radius

yaml
merge-radius:
  item: 3.5       # Yerdeki itemleri birleştir
  exp: 4.0        # XP orblarını birleştir

# Hopper Optimizasyonu

yaml
hopper:
  cooldown-when-full: true
  disable-move-event: false
  ignore-occluding-blocks: false
Hopper'lar en çok CPU yiyen bloklardan biridir. Water stream ile item taşıma hopper'dan çok daha verimlidir.

# Redstone

yaml
# Alternate Current redstone implementasyonu vanilla'dan çok daha hızlı
redstone-implementation: ALTERNATE_CURRENT

# Diğer Önemli Ayarlar

AyarÖnerilenAçıklama
per-player-mob-spawnstrueOyuncu başına mob spawni (daha adil)
max-entity-collisions4Maks entity çarpışması
disable-treasure-mapstrueHazine haritası aramayı kapat (lag yapar)
update-pathfinding-on-block-updatefalseBlok değişikliğinde pathfinding güncelleme
fix-climbing-bypassing-cramming-ruletrueTırmanma exploit düzeltmesi
armor-stands.tickfalseZırh standı tick'ini kapat

# spigot.yml

yaml
world-settings:
  default:
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8
      water: 8
      tick-inactive-villagers: true
    merge-radius:
      item: 4.0
      exp: 6.0
    mob-spawn-range: 4
    item-despawn-rate: 6000
    arrow-despawn-rate: 300
    nerf-spawner-mobs: false
mob-spawn-range değeri simulation-distance - 1'den büyük olmamalıdır. Aksi halde moblar spawn olup hemen despawn olur.

# bukkit.yml

yaml
spawn-limits:
  monsters: 30
  animals: 8
  water-animals: 3
  water-ambient: 3
  water-underground-creature: 3
  axolotls: 3
  ambient: 1

chunk-gc:
  period-in-ticks: 400

ticks-per:
  animal-spawns: 400
  monster-spawns: 4
  water-spawns: 1
  water-ambient-spawns: 1
  water-underground-creature-spawns: 1
  axolotl-spawns: 1
  ambient-spawns: 1
  autosave: 6000

# Pre-Generation (Dünya Önceden Oluşturma)

Chunk generation en çok CPU harcayan işlemdir. Dünyayı önceden oluşturmak runtime'da bu yükü ortadan kaldırır.

# Chunky Plugin

text
/chunky radius 5000
/chunky start
/chunky pause       # Durdurmak için
/chunky continue    # Devam ettirmek için

5000 blok radius = ~10.000x10.000 alan. Bu işlem uzun sürebilir (30dk - birkaç saat). Sunucu boşken çalıştırın.

# Dünya Sınırı

text
/worldborder set 10000    # 10.000 blok çap
/worldborder center 0 0   # Merkez noktası
Dünya sınırı olmadan oyuncular sonsuz chunk generate edebilir. Bu sunucuyu çökertebilir. Her zaman sınır koyun.

# Spark ile Performans Analizi

Spark, Minecraft sunucuları için en gelişmiş profiling aracıdır. TPS düşüşünün nedenini bulmak için kullanılır.

# Kurulum ve Temel Komutlar

KomutAçıklama
/spark profiler startCPU profiling başlat
/spark profiler stopProfiling durdur ve rapor oluştur
/spark tpsAnlık TPS göster
/spark tickmonitorTick bazlı izleme başlat
/spark healthSunucu sağlık özeti (CPU, RAM, TPS)
/spark gcGarbage collection istatistikleri

# Rapor Okuma

  • waitForNextTick() sleep > %80: Sunucu sağlıklı, yedek kapasite var
  • Sleep %20-80: Normal yük altında, izlemeye devam
  • Sleep < %5: Kritik — lag spike'lar kaçınılmaz
  • En çok CPU yiyen thread: Darboğaz burası — entity, redstone veya chunk gen olabilir
Spark raporunu spark.lucko.me üzerinden paylaşabilirsiniz. Destek alırken bu linki paylaşmak sorunu hızlı çözer.

# Performans Pluginleri

PluginİşlevNot
SparkTPS/RAM izleme, profilerZorunlu — her sunucuda olmalı
ChunkyDünya pre-generationKurulum sonrası çalıştır
ViewDistanceTweaksDinamik view distanceOyuncu sayısına göre otomatik ayar
ClearLaggItem/entity temizlemeKonfigüre edilmeli, agresif kullanmayın
FarmControlFarm limitleriMob farm abuse'u önler
VillagerOptimiserVillager AI optimizeVillager lagını çözer
EntityTrackerFixerEntity tracking düzeltmeBüyük sunucularda etkili

# Sık Yapılan Hatalar

  • Xms ≠ Xmx: İkisi eşit olmalı, yoksa runtime'da stutter olur
  • Çok fazla RAM: 16GB+ allocate etmek GC pause'ları uzatır. İhtiyaçtan fazla RAM vermeyin
  • view-distance çok yüksek: Her ek chunk katlanarak CPU kullanır. 6-7 yeterlidir
  • /reload kullanmak: Memory leak ve plugin hatalarına neden olur. Her zaman restart yapın
  • Dünya sınırı koymamak: Oyuncular sonsuz chunk oluşturabilir, disk ve CPU patlar
  • Timings yerine Spark: Timings deprecated, Spark çok daha detaylı ve doğru
  • Hopper farmlarda: Yüzlerce hopper = ciddi lag. Water stream alternatifini kullanın

# Optimizasyon Kontrol Listesi

  • ☐ JVM flags (Aikar) ayarlandı
  • simulation-distance: 4-5 ayarlandı
  • view-distance: 6-7 ayarlandı
  • ☐ Spawn limitleri düşürüldü (monsters: 30, animals: 8)
  • per-player-mob-spawns: true açıldı
  • ☐ Entity activation range düşürüldü
  • redstone-implementation: ALTERNATE_CURRENT
  • ☐ Dünya pre-generate edildi (Chunky)
  • ☐ Dünya sınırı (worldborder) ayarlandı
  • ☐ Spark profiler kuruldu
  • disable-treasure-maps: true
  • ☐ Hopper cooldown ayarlandı
  • ☐ Player collision kapatıldı
Minecraft Sunucu Kurulumu

Henüz sunucu kurmadıysanız bu rehberle başlayın.

Plugin Kurulum Rehberi

Temel pluginleri kurup yapılandırın.

Optimizasyonu bize bırakın

Sunucunuzun config dosyalarını analiz edip profesyonel optimizasyon yapıyoruz. Teklif alın →