Minecraft TPS düşüklüğü, sunucunun bir tick’i 50 milisaniyeden uzun sürede tamamlaması sonucu ortaya çıkar ve oyuncular tarafından blokların geç kırılması, mob’ların kayarak hareket etmesi, item’ların geç düşmesi olarak hissedilir. Çözüm, TPS’i doğrudan “yükseltmeye” çalışmak değil, tick içinde yapılan pahalı işi bulup azaltmaktır.
Bu sayfada TPS’in ne olduğunu, hangi değerin gerçekten anlamlı olduğunu ve sunucunuzu yavaşlatan sebepleri sıklık sırasına göre ele alıyoruz. Her sebep için doğrudan uygulanabilir config satırları ve komutlar veriyoruz.
TPS ve MSPT Arasındaki Fark#
Minecraft sunucusu saniyede 20 kez tick çalıştırmayı hedefler. Bir tick içinde oyuncu hareketleri işlenir, entity’lerin yapay zekâsı çalıştırılır, blok güncellemeleri uygulanır, redstone hesaplanır ve eklentilerin zamanlanmış görevleri yürütülür. Tüm bunlar için ayrılan bütçe 50 milisaniyedir.
MSPT (milliseconds per tick) bu bütçenin ne kadarını kullandığınızı gösterir. TPS ise bütçeyi aştığınızda düşmeye başlar. Yani MSPT bir “erken uyarı” metriğidir, TPS ise hasar oluştuktan sonraki sonuçtur.
| Ortalama MSPT | Görünen TPS | Oyuncu deneyimi |
|---|---|---|
| 15 ms | 20.0 | Akıcı, büyümeye yer var |
| 35 ms | 20.0 | Akıcı ama kalabalıkta riskli |
| 48 ms | 20.0 | Sınırda, ani yükte kopar |
| 65 ms | 15.4 | Belirgin gecikme |
| 100 ms | 10.0 | Oynanamaz |
Ölçüm: Sorunu Görmeden Ayar Değiştirmeyin#
TPS düşüklüğünün en yaygın çözüm hatası, internette bulunan bir config dosyasını kopyalayıp yapıştırmaktır. Bu yöntemle gerçek darboğazı bulma ihtimaliniz düşüktür ve sunucunuzda oyun deneyimini bozan onlarca gereksiz ayar birikir.
Doğru sıra ölçmekle başlar. spark profiler, Paper, Purpur, Fabric, NeoForge ve Forge için ayrı yapılar sunar; sunucunuzun türüne uygun olanı indirip plugins veya mods klasörüne koyun.
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.
Kurulumdan sonra sunucu en yoğun olduğu anda profil alın; boş sunucuda alınan profil işe yaramaz.
spark health
spark tps
spark profiler --timeout 300 --thread server
Beş dakika sonunda konsola bir bağlantı düşer. Bu bağlantıdaki çağrı ağacında hangi metodun ne kadar zaman aldığını yüzde olarak görürsünüz. Raporu yorumlamayı spark rapor okuma rehberinde ayrıntılı anlatıyoruz.
Sebep 1: Entity Yığılması#
Uzun süredir açık olan sunucularda TPS düşüklüğünün birinci sebebi entity sayısıdır. Yere atılmış itemler, oyuncuların unuttuğu hayvan çiftlikleri, mob grinder’lar, minecart’lar, armor stand’ler ve boat’lar birikir. Her biri tick başına işlem ister.
Önce durumu görün:
spark tickmonitor
minecraft:data get entity @e limit=1
paper mobcaps
paper entity list
paper entity list komutu dünya bazında hangi entity türünden kaç adet olduğunu ve nerede yoğunlaştığını verir. Tek bir chunk’ta yüzlerce item veya mob görüyorsanız kaynak bulunmuş demektir.
Kalıcı çözüm: spigot.yml ayarları#
world-settings:
default:
entity-activation-range:
animals: 16
monsters: 24
raiders: 40
misc: 8
water: 8
villagers: 16
merge-radius:
item: 3.5
exp: 4.0
max-entity-collisions: 2
item-despawn-rate: 4000
arrow-despawn-rate: 300
nerf-spawner-mobs: true
entity-activation-range, bir entity’nin oyuncudan hangi mesafeye kadar aktif tick alacağını belirler. Bu değerleri düşürmek uzaktaki mob’ların yapay zekâsını uyutur ve genellikle en hızlı hissedilen TPS kazancını sağlar.
merge-radius yere düşen itemleri birleştirerek entity sayısını azaltır. Item değerini 3.5’in üstüne çıkarmayın, oyuncular item toplarken tuhaf davranışlar fark eder.
nerf-spawner-mobs: true spawner’dan çıkan mob’ların yapay zekâsını kapatır ve XP çiftliklerinin verimini değiştirir. Survival ekonomisi mob grinder’lara dayanıyorsa oyuncularınıza önceden duyurun.Global mob limitleri#
spawn-limits:
monsters: 40
animals: 8
water-animals: 3
water-ambient: 2
ambient: 1
ticks-per:
animal-spawns: 400
monster-spawns: 4
autosave: 6000
Bu değerler bukkit.yml dosyasına yazılır ve oyuncu başına düşen mob sayısını sınırlar. Varsayılan monsters değeri 70’tir; 40’a çekmek oyun hissini bozmadan ciddi yük azaltır.
Sebep 2: Hopper, Redstone ve Otomatik Sistemler#
Hopper’lar her tick’te üstlerindeki envanteri kontrol eder. 200 hopper’lık bir depolama sisteminde bu, saniyede 4000 envanter taraması demektir. Redstone saat devreleri de aynı şekilde sürekli blok güncellemesi üretir.
world-settings:
default:
hopper:
cooldown-when-full: true
disable-move-event: false
ticks-per:
hopper-transfer: 8
hopper-check: 8
hopper-transfer ve hopper-check değerlerini 8’e çıkarmak, hopper’ların kontrol sıklığını yarıya indirir. Item taşıma hızı yavaşlar ama oyuncuların çoğu farkı hissetmez. cooldown-when-full: true dolu hopper’ların boşuna kontrol yapmasını engeller.
Redstone tarafında Paper’ın alternatif redstone motoru belirgin kazanç sağlar:
misc:
redstone-implementation: ALTERNATE_CURRENT
Sebep 3: Kontrolsüz Chunk Üretimi#
Yeni chunk üretmek, tek bir tick içinde yapılabilecek en pahalı işlerden biridir. Bir oyuncu at ya da elytra ile keşfe çıktığında MSPT anında ikiye katlanabilir. Birkaç oyuncu aynı anda keşfe çıkarsa TPS 10’un altına iner.
Kalıcı çözüm dünyayı önceden üretmek ve sınırlamaktır:
-
Dünya sınırını koyun#
worldborder center 0 0 worldborder set 20000 worldborder warning distance 100 -
Chunk’ları oyuncular yokken üretin#
Chunky eklentisiyle sınır içindeki alanı üretin. Saatler sürebilir, gece çalıştırın.
chunky world world chunky radius 10000 chunky start -
Nether ve End için tekrarlayın#
Nether’da bir blok 8 bloğa karşılık geldiği için 20.000’lik overworld sınırına 2.500 blok yarıçap yeter.
Chunk yükleme ayarlarını da gözden geçirin. server.properties içinde:
view-distance=8
simulation-distance=6
sync-chunk-writes=false
Bu iki değerin performansa etkisi ve sunucu türüne göre ideal aralıkları için view distance ve simulation distance rehberine bakın.
Sebep 4: Ağır veya Kötü Yazılmış Eklentiler#
Eklenti sayısı tek başına bir gösterge değildir. 40 hafif eklentili sunucu sorunsuz çalışırken, tek bir arazi koruma veya ekonomi eklentisi tick süresinin yarısını yiyebilir. Ayırt etmenin yolu profil almaktan geçer.
spark raporunda dikkat edeceğiniz kalıplar:
Ana iş parçacığında veritabanı#
MySQL sorgusu tick içinde çalışıyorsa her ağ gecikmesi doğrudan MSPT’ye eklenir. Eklentinin asenkron modu varsa açın.
Sürekli oyuncu döngüsü#
Her tick tüm oyuncuları dolaşan scoreboard ve hologram eklentileri kalabalıkta pahalıya patlar. Güncelleme aralığını saniyeye çıkarın.
Geniş bölge taraması#
Her blok kırılışında tüm bölge listesini tarayan koruma eklentileri yerine indeksli çalışan alternatifleri seçin.
Senkron dosya yazımı#
Log ve istatistik eklentileri diske tick içinde yazıyorsa I/O gecikmesi tick’e yansır.
Şüphelendiğiniz eklentiyi test sunucusunda kaldırıp aynı yük altında ölçümü tekrarlayın. Üretim sunucusunda deneme yapmayın. Alternatif ararken 2026 eklenti listemizden yararlanabilirsiniz.
Sebep 5: Çöp Toplayıcı Duraklamaları#
TPS grafiğinde düzenli aralıklarla tekrarlayan keskin düşüşler görüyorsanız sebep büyük ihtimalle çöp toplayıcıdır. Heap doluyken yapılan bir toplama işlemi 200-500 ms sürebilir ve bu süre boyunca tick ilerlemez.
İlk kontrol: Xms ve Xmx eşit mi, heap yeterli mi?
| Paket RAM | Heap | Önerilen GC |
|---|---|---|
| 8 GB | -Xms6G -Xmx6G | G1GC + Aikar’s Flags |
| 12 GB | -Xms10G -Xmx10G | G1GC + Aikar’s Flags |
| 16 GB | -Xms14G -Xmx14G | G1GC veya ZGC |
| 32 GB | -Xms28G -Xmx28G | ZGC değerlendirilebilir |
-XX:+ZGenerational bayrağı Java 25’te obsolete’tir, kullanmayın.Bayrakların tamamı ve hangi durumda hangisinin seçileceği RAM ve JVM flag rehberinde. Sunucunuz sürekli bellek hatası veriyorsa OutOfMemoryError çözüm sayfasına geçin.
Sebep 6: Donanım Yetersizliği#
Yukarıdaki beş sebebi de elediyseniz ve spark raporunda zamanın büyük kısmı vanilla oyun mantığında geçiyorsa (entity tick, block tick, chunk tick), sorun yazılımda değil donanımdadır.
Minecraft’ın ana tick döngüsü tek çekirdekte çalışır. Bu yüzden 32 çekirdekli düşük frekanslı bir sunucu işlemcisi, 12 çekirdekli yüksek frekanslı bir Ryzen 9’un yanında yavaş kalır. Doğru hedef:
- İşlemci
- AMD Ryzen 9 7900X / 7950X, alt sınır Ryzen 9 3900X
- RAM
- En az 8 GB; 30+ oyuncuda 16 GB, modpackte 16-32 GB
- Disk
- NVMe SSD, en az 50 GB (modluda 100 GB üzeri)
- Sanallaştırma
- Ayrılmış vCPU; paylaşımlı kaynakta steal time TPS’i düşürür
Bileşen seçimini ayrıntılı ele aldığımız donanım rehberi ve oyuncu sayısına göre RAM tablosu karar vermenizi kolaylaştırır. Yüksek frekanslı platform arıyorsanız Ryzen tabanlı yüksek CPU VDS paketleri Minecraft için özellikle uygundur.
Hızlı Müdahale Sırası#
TPS şu anda düşükse ve hızlı bir toparlanma gerekiyorsa şu sırayı izleyin:
-
Anlık durumu görün#
spark health paper entity list -
Birikmiş item ve entity’yi temizleyin#
Oyunculara duyurarak yere düşmüş itemleri temizleyin. Bu, dakikalar içinde ölçülebilir kazanç sağlar.
say 60 saniye icinde yerdeki itemler temizlenecek. minecraft:kill @e[type=item] -
view-distance ve simulation-distance düşürün#
Geçici olarak 6 / 4 değerlerine inip TPS’in toparlanıp toparlanmadığına bakın.
-
Profil alın#
Sunucu hâlâ yükteyken beş dakikalık spark profili alın ve raporu saklayın.
-
Planlı yeniden başlatma yapın#
Ölçüm sonrası sunucuyu düzgün kapatın; birikmiş yük sıfırlanır.
save-all stop
kill @e[type=item] komutu yerdeki tüm itemleri siler ve geri alınamaz. Oyuncuların ölüm sonrası eşyalarını da yok edebilir. Mutlaka önceden duyurun ve güncel bir yedeğiniz olduğundan emin olun.Sürekli İzleme Kurun#
TPS düşüklüğünü bir kez çözmek yetmez; yük büyüdükçe geri gelir. Kalıcı çözüm ölçümü rutine bağlamaktır.
- Haftada bir yoğun saatte spark profili alıp önceki raporla karşılaştırın.
- Konsol loglarında
Can’t keep up! Is the server overloaded?uyarısının sıklığını takip edin. Bu uyarının anlamı ve çözümü için ilgili hata sayfasına bakın. - Oyuncu sayısı arttıkça MSPT’nin nasıl değiştiğini not edin; doğrusal artış normaldir, hızlanan artış doyum işaretidir.
- Yeni eklenti kurmadan önce ve kurduktan sonra ölçüm alın.
Genel optimizasyon stratejisinin tamamı için Minecraft sunucu optimizasyonu ana rehberimizi, config dosyalarının satır satır açıklaması için paper.yml optimizasyon sayfasını inceleyin.
Özetle#
TPS düşüklüğü bir hata değil, sunucunun 50 milisaniyelik tick bütçesini aşmasının sonucudur. Çözümü de bütçeyi aşan işi bulup kesmekten geçer.
Sırayla: MSPT’yi ölçün, entity yığılmasını temizleyip activation range ile sınırlayın, hopper ve redstone yükünü azaltın, dünyayı önceden üretip sınırlayın, eklentileri profille denetleyin, heap ve GC ayarlarını düzeltin. Bunların hepsini yaptığınız hâlde MSPT 40 ms’in altına inmiyorsa artık ayar değil daha yüksek tek çekirdek performansına sahip donanım gerekiyor demektir.