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ı.
# 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.
| Metrik | İdeal | Kabul Edilebilir | Sorunlu |
|---|---|---|---|
| TPS | 20.0 | 18-20 | <15 |
| MSPT (ms/tick) | <30ms | 30-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:
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
# Flag Açıklamaları
| Flag | Değer | Açıklama |
|---|---|---|
-Xms/-Xmx | 8G | Min/max heap boyutu (eşit olmalı) |
-XX:+UseG1GC | — | G1 garbage collector kullan |
-XX:MaxGCPauseMillis | 200 | Hedef GC duraklama süresi (ms) |
-XX:+AlwaysPreTouch | — | Başlangıçta tüm RAM'i ayır |
-XX:G1NewSizePercent | 30 | Young gen min boyutu (%) |
-XX:G1MaxNewSizePercent | 40 | Young gen max boyutu (%) |
-XX:G1HeapRegionSize | 8M | Heap bölge boyutu (12GB+ için 16M) |
-XX:G1ReservePercent | 20 | Acil durum için ayrılan heap (%) |
-XX:MaxTenuringThreshold | 1 | Objeleri 1 GC sonra old gen'e taşı |
-XX:SurvivorRatio | 32 | Survivor space oranı |
# RAM Önerileri
| Oyuncu Sayısı | Önerilen RAM | Not |
|---|---|---|
| 1-10 | 2-4 GB | Vanilla veya az plugin |
| 10-30 | 4-6 GB | Orta düzey plugin |
| 30-60 | 6-10 GB | Çok plugin + dünya |
| 60-100 | 10-14 GB | Yoğun sunucu |
| 100+ | 16+ GB | Dedicated sunucu gerekli |
-Xmx6G kullanın.# server.properties
Sunucunun temel yapılandırma dosyası. Performans için kritik ayarlar:
| Ayar | Varsayılan | Önerilen | Açıklama |
|---|---|---|---|
view-distance | 10 | 6-7 | Oyuncuya gönderilen chunk mesafesi |
simulation-distance | 10 | 4-5 | Aktif olarak işlenen chunk mesafesi |
network-compression-threshold | 256 | 256 | Paket sıkıştırma eşiği (byte) |
max-tick-time | 60000 | 60000 | Watchdog timeout (ms) |
spawn-protection | 16 | 16 | Spawn 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
chunk-loading-basic:
autoconfig-send-distance: true
player-max-concurrent-chunk-generates: 0
player-max-concurrent-chunk-loads: 0
# Paket Limiter
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
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ı:
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 32
flying-monsters: 32
# Despawn Ayarları
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
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
merge-radius:
item: 3.5 # Yerdeki itemleri birleştir
exp: 4.0 # XP orblarını birleştir
# Hopper Optimizasyonu
hopper:
cooldown-when-full: true
disable-move-event: false
ignore-occluding-blocks: false
# Redstone
# Alternate Current redstone implementasyonu vanilla'dan çok daha hızlı
redstone-implementation: ALTERNATE_CURRENT
# Diğer Önemli Ayarlar
| Ayar | Önerilen | Açıklama |
|---|---|---|
per-player-mob-spawns | true | Oyuncu başına mob spawni (daha adil) |
max-entity-collisions | 4 | Maks entity çarpışması |
disable-treasure-maps | true | Hazine haritası aramayı kapat (lag yapar) |
update-pathfinding-on-block-update | false | Blok değişikliğinde pathfinding güncelleme |
fix-climbing-bypassing-cramming-rule | true | Tırmanma exploit düzeltmesi |
armor-stands.tick | false | Zırh standı tick'ini kapat |
# spigot.yml
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
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
/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ı
/worldborder set 10000 # 10.000 blok çap
/worldborder center 0 0 # Merkez noktası
# 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
| Komut | Açıklama |
|---|---|
/spark profiler start | CPU profiling başlat |
/spark profiler stop | Profiling durdur ve rapor oluştur |
/spark tps | Anlık TPS göster |
/spark tickmonitor | Tick bazlı izleme başlat |
/spark health | Sunucu sağlık özeti (CPU, RAM, TPS) |
/spark gc | Garbage 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.lucko.me üzerinden paylaşabilirsiniz. Destek alırken bu linki paylaşmak sorunu hızlı çözer.# Performans Pluginleri
| Plugin | İşlev | Not |
|---|---|---|
| Spark | TPS/RAM izleme, profiler | Zorunlu — her sunucuda olmalı |
| Chunky | Dünya pre-generation | Kurulum sonrası çalıştır |
| ViewDistanceTweaks | Dinamik view distance | Oyuncu sayısına göre otomatik ayar |
| ClearLagg | Item/entity temizleme | Konfigüre edilmeli, agresif kullanmayın |
| FarmControl | Farm limitleri | Mob farm abuse'u önler |
| VillagerOptimiser | Villager AI optimize | Villager lagını çözer |
| EntityTrackerFixer | Entity tracking düzeltme | Bü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-5ayarlandı - ☐
view-distance: 6-7ayarlandı - ☐ Spawn limitleri düşürüldü (monsters: 30, animals: 8)
- ☐
per-player-mob-spawns: trueaçı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ı
Henüz sunucu kurmadıysanız bu rehberle başlayın.
Temel pluginleri kurup yapılandırın.
Sunucunuzun config dosyalarını analiz edip profesyonel optimizasyon yapıyoruz. Teklif alın →