Minecraft Sunucu Lag Sorunu Nasıl Çözülür? TPS, MSPT ve spark Rehberi
Kısa cevap
Minecraft sunucu lag sorununu çözmek için önce sorunun gerçekten sunucuda olduğunu doğrula: TPS 20'nin altına düşüyor ve MSPT 50 milisaniyeyi aşıyorsa ana thread aşırı yüklenmiştir; TPS 20'de kalıyorsa sorun ağ gecikmesinde ya da oyuncunun kendi bilgisayarındadır. Sorun sunucudaysa takılma yaşanırken spark profilleyiciyi çalıştır, rapordaki en büyük kalemi, genellikle entity'leri, farmları, chunk üretimini ya da bir eklentiyi düzelt; ardından dünyayı önceden oluştur, görüş ve simülasyon mesafesini ve Paper ayarlarını düzenle.
TPS, MSPT, FPS ve ping arasındaki fark nedir?
TPS, MSPT, FPS ve ping dört farklı şeyi ölçer ve bunları karıştırmak, lag çözümlerinin tutmamasının en yaygın nedenidir. Sunucu dünyayı tick'ler halinde simüle eder ve saniyede 20 tick hedefler; bu da her tick'e 50 milisaniyelik bir bütçe verir. MSPT (tick başına milisaniye), her tick'in bu bütçenin ne kadarını gerçekten kullandığını gösterir. FPS oyuncunun kendi bilgisayarının saniyede çizdiği kare sayısıdır; ping ise o oyuncu ile sunucu arasındaki gidiş dönüş süresidir.
İzlemen gereken asıl sayı MSPT'dir, çünkü TPS 20'de tavan yapar ve sınıra ne kadar yaklaştığını gizler. 20 TPS ve 45 MSPT ile çalışan bir sunucu kusursuz görünür ama birkaç oyuncu daha girdiğinde tökezler; 20 TPS ve 15 MSPT ile çalışan bir sunucunun ise bolca payı vardır. Paper'da mspt ve tps komutları son ortalamaları gösterir; vanilla 1.20.3 ve sonrasında tick query komutu ortalama tick süresini ve yüzdelik dilimleri raporlar.
| Ölçüm | Neyi ölçer | Sağlıklı değer | Kötüyse oyuncular ne yaşar |
|---|---|---|---|
| TPS | Sunucunun saniyede tamamladığı tick sayısı | Sabit 20 | Herkes aynı anda: yavaş moblar ve ekinler, geç kırılan bloklar, geri sekme |
| MSPT | Sunucunun her tick'e harcadığı milisaniye | 50'nin altı, tercihen epey altı | 50'yi geçene kadar hiçbir şey, sonra TPS düşmeye başlar |
| İstemci FPS | Oyuncunun kendi bilgisayarının çizdiği kare sayısı | Bilgisayara bağlı | Yalnızca o oyuncu takılır, tek oyunculu modda bile |
| Ping | Oyuncu ile sunucu arasındaki ağ gidiş dönüş süresi | Düşük ve sabit | O oyuncunun vuruşları ve koyduğu bloklar geç işlenir ya da geri sıçrar |
Sorun sunucuda mı, ağda mı, oyuncunun bilgisayarında mı?
Önce kimin takıldığını ve o anda TPS'in ne gösterdiğini kontrol et. Herkes aynı anda takılıyor ve TPS düşüyorsa sunucu aşırı yüklenmiştir. Diğerleri sorunsuzken yalnızca bir oyuncu şikâyet ediyorsa sorun o oyuncunun bağlantısında ya da bilgisayarındadır. Herkes takılıyor ama TPS 20'de ve MSPT düşükse ağ yoluna, proxy'ye ya da olası bir saldırıya bak. Konsol da ipucu verir: vanilla, tick'ler geride kaldığında Can't keep up! Is the server overloaded? uyarısını yazar; bu uyarı tekrar ediyorsa sorun yalnızca ağda değildir.
Aşağıdaki tablo en sık görülen belirtileri, olası nedenlerini, nedeni nasıl doğrulayacağını ve ilk yapman gerekeni özetler. Tek bir belirtiye bakıp ayar değiştirmeye başlamadan önce doğrulama sütunundaki kontrolü yap; yanlış teşhis, sorunu çözmeden oyuncuların sevdiği mekanikleri bozmanın en kısa yoludur.
| Belirti | Olası neden | Nasıl doğrularsın | Çözüm |
|---|---|---|---|
| Herkes takılıyor, moblar donuyor, TPS 20'nin altında | Ana thread aşırı yüklü | mspt 50'nin üstünde; spark profili | spark raporundaki en büyük kalemi düzelt |
| Birkaç dakikada bir kısa donma | Otomatik kayıt, çöp toplama ya da zamanlanmış eklenti görevi | spark tickmonitor ve spark gc | Kayıtları yay, heap'i doğru boyutlandır, görevi yeniden planla |
| Yalnızca oyuncular keşif yaparken takılma | Yeni chunk üretimi | Keşfedilmiş bölgelerde sorun kaybolur | Chunky ile ön üretim yap, dünya sınırı koy |
| Tek bir üs ya da bölge çevresinde takılma | Farm, hopper zinciri, redstone saati ya da entity yığını | paper entity list; spark profili | Farmı sınırla, entity ve hopper ayarlarını düzenle |
| Bir eklenti ekledikten sonra başlayan takılma | Ana thread'de ağır iş yapan eklenti | Eklentiye göre gruplanmış spark raporu | Güncelle, yeniden ayarla ya da değiştir |
| Bir oyuncu takılıyor, diğerleri sorunsuz | O oyuncunun bağlantısı ya da bilgisayarı | spark ping; F3 ekranındaki FPS | Kablolu bağlantı, düşük render mesafesi, istemci performans modları |
| Herkes takılıyor ama TPS 20'de | Ağ yolu, proxy ya da DDoS | Tüm oyuncuların pingi aynı anda sıçrar | Proxy'yi kontrol et, sağlayıcının desteğine başvur |
| OutOfMemoryError ile çökme | Heap küçük ya da bellek sızıntısı var | spark health --memory; spark heapsummary | Önce sızıntıyı bul, gerekirse RAM ekle |
spark ile lag nedenini nasıl bulursun?
Kullanman gereken profilleyici spark'tır: sunucunun ne yaptığından örnekler alır ve tarayıcıda açtığın etkileşimli bir rapor yükler. Paper 1.21'den beri spark'ı dahili olarak getirir; Fabric, NeoForge ve Forge'da ise mod olarak eklersin. Takılma yaşanırken spark profiler start ile başlat, birkaç dakika bekle ve rapor bağlantısını almak için spark profiler stop yaz ya da beş dakika sonra kendiliğinden durması için komuta --timeout 300 ekle. Kısa ani takılmalar için --only-ticks-over 50 seçeneği yalnızca geç kalan tick'leri kaydeder.
Raporda Server thread'i aç ve en büyük yüzdeleri ağacın aşağısına doğru izle: genellikle entity işleme, hopper gibi blok entity'ler, chunk yükleme ve üretimi ya da bir eklentinin veya modun olay işleyicisiyle karşılaşırsın. spark sonuçları eklentiye ya da moda göre de gruplayabilir; bu da suçluyu doğrudan gösterir. Profilleyicinin yanında spark tps TPS ile tick sürelerini, spark health işlemci, bellek ve disk kullanımını gösterir; spark tickmonitor ani sıçramaları raporlar, spark gc ise çöp toplama duraklamalarını listeler.
Eski rehberler timings çalıştırmanı söyler; bu adımı atla. Paper, timings'i spark lehine kullanımdan kaldırdı (deprecated) ve 1.21'de varsayılan olarak kapattı; raporlarını okumak zaten zordu. Profili gerçek takılma sırasında al, gece dörtte boş bir sunucuda değil; aksi halde rapor sana yalnızca boşta bekleyen bir sunucu gösterir.
En çok lag yapan entity'ler, farmlar ve redstone düzenekleri hangileri?
Entity'ler lag sorunlarının en yaygın kaynağıdır, çünkü her mob, yere düşen eşya, maden arabası ve zırh askısı ana thread'de işlenir. Yüzlerce hayvan biriktiren mob farmları, demir ve altın farmları, yığınla yere düşmüş eşya ve köylü ticaret salonları listenin başındadır; köylüler özellikle pahalıdır, çünkü yapay zekâları sürekli yatak, meslek bloğu ve yol arar. Paper'da paper entity list komutu hangi entity türlerinin işlendiğini ve nerede yoğunlaştığını gösterir; böylece 800 tavuğun sıkıştığı o tek chunk'ı kolayca bulursun.
Hopper ve redstone hemen ardından gelir. Her hopper üstündeki alanı eşya ve konteyner için tekrar tekrar kontrol eder ve baktığı yöne aktarır; uzun hopper zincirleri ve hopper'lı maden arabaları hızla birikir, hiç durmayan redstone saatleri de sunucuyu blok güncellemelerine boğar. Bunları düzeltmek ayarlar kadar sunucu kurallarıyla da ilgilidir: farm başına hayvan sayısına sınır koy, uzun hopper hatları yerine mümkünse su akıntısı kullan, kimse yakınında değilken saatleri kapat ve griefer'ların bilerek kurduğu lag makinelerini yasakla. Geriye kalanı ayarlarla yumuşatırsın.
Chunk yükleme ve üretimi neden ani takılmalara yol açar?
Yeni arazi oluşturmak sunucunun yaptığı en pahalı işlerden biridir; bu yüzden en sert takılmaları yeni topraklarda keşif yapan oyuncular yaratır. Her yeni chunk için arazi, mağaralar, yapılar ve ışık hesaplanır; elytra, buz üzerinde tekne ya da ender incisiyle hızlı yolculuk saniyede çok sayıda chunk ister. Paper chunk sisteminin büyük kısmını yardımcı thread'lerde çalıştırır, ama üretim yine de işlemci için yarışır ve bellek kullanımını artırır; oyuncular keşfedilmiş bölgelere döndüğü anda da takılmalar kaybolur.
Kalıcı çözüm, sunucu boşken dünyayı Chunky ile önceden oluşturmak ve ardından oluşturulan alanın hemen içine bir dünya sınırı koymaktır; böylece oyun sırasında kimse yeni chunk üretemez. Paper'ın işe yarayan emniyet ayarları da var: chunks.prevent-moving-into-unloaded-chunks oyuncuların yüklenmemiş chunk'lara dalmasını engeller, global ayarlardaki player-max-chunk-generate-rate tek bir oyuncunun ne kadar hızlı üretim tetikleyebileceğini sınırlar, chunks.max-auto-save-chunks-per-tick de otomatik kayıtları yayarak hepsinin tek bir tick'e yığılmasını önler.
Lag sorununu azaltan Paper ayarları hangileri?
Paper'ın ayarları server.properties, bukkit.yml, spigot.yml ve config klasöründeki paper-world-defaults.yml ile paper-global.yml dosyalarına dağılmıştır; işin çoğunu ise bir avuç seçenek yapar. Her seferinde tek bir grubu değiştir, yeniden başlat ve öncesiyle sonrasının MSPT değerlerini karşılaştır; çünkü bu ayarların bir kısmı hız karşılığında vanilla davranışından biraz ödün verir ve hangi değişikliğin neye yol açtığını bilmen gerekir. Açık bir sunucuda ayarları yeniden yüklemek desteklenmez, yeniden başlatmayı tercih et.
Paper üzerine kurulu Purpur daha fazla seçenek ekler; örneğin ticaret salonunda hapsolmuş köylülerin yapay zekâsının büyük kısmını atlamasını sağlayabilir. Neyi değiştirirsen değiştir not al; böylece oyuncuların bel bağladığı bir farmı bozan ayarı kolayca geri alabilirsin.
| Ayar | Dosya | Ne yapar | Bedeli |
|---|---|---|---|
| view-distance 7–8, simulation-distance 4–6 | server.properties | Her oyuncunun çevresinde daha az chunk gönderilir ve işlenir | Oyuncudan uzaktaki farmlar ve moblar daha erken durur |
| spawn-limits ve ticks-per | bukkit.yml | Mob sınırlarını ve doğma denemelerinin sıklığını düşürür | Dünyada daha az mob olur |
| entity-activation-range | spigot.yml | Oyunculardan uzaktaki entity'ler daha seyrek işlenir | Uzak mob farmları yavaşlar |
| merge-radius | spigot.yml | Yakındaki eşyaları ve XP kürelerini birleştirir | Eşyalar görünür şekilde kümelenir |
| hopper-transfer ve hopper-check | spigot.yml | Hopper'lar eşyayı daha seyrek taşır ve kontrol eder | Ayıklama sistemleri yavaşlar, bazı zamanlamalar bozulabilir |
| redstone-implementation: ALTERNATE_CURRENT | paper-world-defaults.yml | Daha az blok güncellemesiyle daha hızlı redstone tozu | Hassas bazı düzenekler farklı davranabilir |
| alt-item-despawn-rate | paper-world-defaults.yml | Taş, toprak gibi çöp eşyaları daha erken siler | Yere atılan çöp eşyalar daha çabuk kaybolur |
| optimize-explosions: true | paper-world-defaults.yml | Daha hızlı bir patlama hesabı kullanır | Vanilla'ya göre küçük farklar |
| treasure-maps.enabled: false | paper-world-defaults.yml | Uzak yapıları arayan hazine haritalarını kapatır | Oyuncular hazine ve kaşif haritası alamaz |
Hangi eklentiler lag yapar, suçluyu nasıl bulursun?
Bir eklenti, ana thread'de ağır iş yaptığında sunucuyu yavaşlatır: bir veritabanını ya da web API'sini senkron olarak sorgulamak, her tick'te tüm entity'leri veya blokları taramak ya da skor tablosu ve tab listesini onlarca placeholder ile saniyede birkaç kez yenilemek gibi. spark'ın eklentiye göre gruplanmış görünümü suçluyu çoğu zaman doğrudan söyler. Söylemiyorsa sunucunun bir kopyasını al, eklentilerin yarısını kaldır, test et ve sorun tek bir eklentiye kalana kadar ikiye bölmeye devam et; reload komutu temiz bir test sağlamaz ve çoğu zaman bellek sızdırır.
Popüler bazı çözümler durumu kötüleştirir. Birkaç dakikada bir eşya silen lag temizleme eklentileri yalnızca belirtiyi bastırır ve oyuncuları kızdırır; Paper'ın merge-radius ve alt-item-despawn-rate ayarları aynı işi çok daha sessiz yapar. Mob yığma (stacker) eklentileri, sunucu mob sınırını doldurmak için sürekli yeni mob doğurmaya çalıştığından kendi yükünü yaratabilir; çalışırken başka eklentileri yükleyen ya da kaldıran eklentiler de sunucuyu bozmanın garantili yoludur. Eklentileri tam sürümüne uygun yapılarla güncel tut, kullanmadıklarını kaldır.
Ağ kaynaklı lag ve yüksek ping nasıl düzeltilir?
Ağ kaynaklı lag, TPS 20'de sabitken yüksek ya da zıplayan ping olarak kendini gösterir ve çözümü sunucu ayarlarında değil bağlantıdadır. En büyük etken mesafedir: oyuncularına yakın bir sunucu daha kısa bir gidiş dönüşle başlar; İstanbul'daki bir sunucunun Türkiye'deki oyunculara uygun olmasının nedeni budur. Ardından oyuncunun kendi kurulumu gelir; burada Wi-Fi paraziti ve paket kaybı ham bant genişliğinden daha önemlidir. Evde barındırılan sunucularda ise sunucu sahibinin yükleme hızı belirleyicidir.
Sunucu sağlıklıyken herkesin pingi aynı anda sıçrıyorsa ağ yolundan ya da bir saldırıdan şüphelen. TheCrewHost oyun sunucularında ücretsiz DDoS koruması sunar ve aynı durum tekrarlanıyorsa 7/24 Türkçe destek ekibi ağ tarafını kontrol edebilir. Kendi tarafında network-compression-threshold değerini, neden değiştirdiğini bilmiyorsan varsayılan 256'da bırak. Bir proxy kullanıyorsan proxy'nin kendi yükünü ve ping değerlerini de ayrıca kontrol et.
Optimize etmek yerine ne zaman yükseltme yapmalısın?
Temiz bir spark raporu, ana thread'in düzeltilebilir tek bir suçlu yerine gerçek oyun yüküyle meşgul olduğunu gösteriyorsa yükseltme zamanı gelmiştir. Makul entity sayıları, önceden oluşturulmuş bir dünya ve ayarlanmış mesafelere rağmen MSPT yüksek kalıyorsa işlemciye takılmışsındır; ihtiyacın daha fazla bellek değil, daha hızlı bir çekirdektir. Heap çöp toplamadan sonra bile sınırına yakın duruyorsa daha fazla RAM gerekir ya da önce düzeltilmesi gereken bir sızıntı vardır. Çok büyük topluluklar zamanla oyuncuları bir Velocity proxy'si arkasındaki birkaç sunucuya böler ya da eklentileri destekliyorsa Folia'ya geçer.
TheCrewHost'ta tüm Minecraft paketleri aynı AMD Ryzen 9 9950X işlemcilerde çalışır ve istediğin an daha üst bir pakete geçebilirsin; büyük paketler daha fazla bellek, en üst paketler de daha fazla vCore ekler. Bu, Paper'ın yardımcı thread'lerine yarar ama ana thread'in hızı aynı kalır. Önce optimize etmenin değerli olmasının nedeni tam olarak budur: en hızlı tick, daha az iş yapması gereken tick'tir.
Minecraft sunucu lag sorununu 8 adımda çöz
- 1
Önce ölç
Takılma sırasında Paper'da mspt ve tps, vanilla'da tick query komutunu çalıştır ve sonradan karşılaştırmak için değerleri not al.
- 2
Ağı ve istemciyi kontrol et
Herkesin mi yoksa tek bir oyuncunun mu takıldığına bak ve herhangi bir ayara dokunmadan önce spark ping ile gecikmeleri karşılaştır.
- 3
spark ile profil al
Gerçek takılma sırasında spark profiler start çalıştır, birkaç dakika sonra spark profiler stop ile durdur ve rapor bağlantısını aç.
- 4
En büyük suçluyu düzelt
Server thread'deki en büyük payı bir farma, entity yığınına, chunk üretimine ya da bir eklentiye kadar izle ve önce onunla ilgilen.
- 5
Dünyayı önceden oluştur
Sunucu boşken oynanabilir alanı Chunky ile oluştur, ardından bu alanın hemen içine bir dünya sınırı koy.
- 6
Mesafeleri ve ayarları düzenle
Görüş ve simülasyon mesafesini düşür, ardından spigot.yml ve Paper dünya ayarlarındaki entity, hopper ve redstone seçeneklerini gruplar halinde ayarla.
- 7
Eklentileri temizle
Her şeyi tam sürümüne uygun yapılara güncelle, kullanılmayan eklentileri kaldır ve spark'ın ana thread'i tıkadığını gösterdiklerini değiştir.
- 8
Yeniden ölç ve karar ver
Yoğun saatteki MSPT değerini ilk ölçümünle karşılaştır; rapor temiz olduğu halde hâlâ yüksekse donanımı yükselt.
Sık Sorulan Sorular
Bol RAM olmasına rağmen sunucum neden takılıyor?
Çünkü takılmaların çoğunun kaynağı bellek değil, işlemci süresidir. Ana thread her tick'i 50 milisaniye içinde bitirmek zorundadır; çok fazla entity, hopper, redstone ya da chunk üretimi, ne kadar RAM boşta olursa olsun bu süreyi aşabilir. spark, heap çöp toplamadan sonra sınırının epey altındayken yüksek MSPT gösteriyorsa bellek eklemek işe yaramaz; tick başına işi azaltmak ya da daha hızlı bir çekirdeğe geçmek işe yarar.
Minecraft sunucusu için iyi bir MSPT değeri nedir?
50 milisaniyenin altındaki her değer sunucuyu tam 20 TPS'te tutar, ama yoğun saatte bunun epey altında kalmayı hedefle; böylece bir grup kâşif ya da büyük bir redstone yapısı için pay kalır. Otomatik kayıt sırasında olduğu gibi tek tük ani sıçramalar normaldir. 50'ye yakın seyreden sürekli değerler, sunucunun sınırda olduğunu ve birkaç oyuncu daha girdiğinde TPS'in düşeceğini gösterir.
Konsoldaki Can't keep up uyarısı ne anlama gelir?
Sunucunun programın gerisinde kaldığını gösterir: tick'ler 50 milisaniyeden uzun sürmüştür ve mesaj kaç milisaniye ya da kaç tick geride olduğunu belirtir. Açılıştan ya da büyük bir dünya kaydından sonra görülen tek bir mesaj zararsızdır. Normal oyun sırasında tekrarlanan mesajlar ana thread'in aşırı yüklendiğini gösterir; sorun yaşanırken spark ile profil al. Nadir tek bir mesaj, çöp toplama gibi kısa bir duraklamadan da kaynaklanabilir.
Paper gerçekten vanilla sunucudan daha az lag yapar mı?
Çoğu sunucu için evet. Paper chunk yükleme ve üretiminin büyük kısmını ana thread'den alır, vanilla kodundaki birçok performans sorununu düzeltir ve vanilla'da olmayan entity, hopper, redstone ve doğma ayarları sunar. Aynı dünyaları çalıştırır ve varsayılan olarak vanilla oynanışını korur; istisna, yeniden açılabilen TNT kopyalama gibi birkaç açık düzeltmesidir. Birebir vanilla mekaniklerine güvenen teknik oyuncular farmlarını önce bir kopyada test etmelidir.
Lag temizleme eklentisi kurmalı mıyım?
İlk adım olarak genellikle hayır. Eşyaları ya da mobları belli aralıklarla silen eklentiler sorunun nedenini gizler ve eşyasını kaybeden oyuncuları kızdırır. Önce gerçek kaynağı spark ile bul; sorun yere düşen eşyalarsa Paper'ın merge-radius ve alt-item-despawn-rate ayarları bunu daha az rahatsız edici biçimde çözer, entity ağırlıklı farmlar ise sınırlar ve sunucu kurallarıyla daha iyi yönetilir.
Fabric ya da NeoForge modlu sunucuda lag nasıl çözülür?
Yöntem aynıdır: MSPT'yi ölç, ardından Fabric, NeoForge ve Forge'da çalışan ve sonuçları moda göre gruplayabilen spark moduyla profil al. Modlu sunucularda takılmalar genellikle büyük otomatik fabrikalardan, ağır dünya üretimi yapan modlardan ya da alanları sürekli işlenir halde tutan chunk loader'lardan gelir. Chunky ile ön üretim burada da aynı ölçüde yardımcı olur; Fabric'teki Lithium gibi sunucu tarafı optimizasyon modları da oynanışı değiştirmeden tick süresini düşürebilir.
Folia büyük bir sunucudaki lag sorununu çözer mi?
Yalnızca belirli bir durumda. Folia dünyanın ayrı bölgelerini paralel işler; bu yüzden oyuncuların birbirinden çok uzakta oynadığı, çok çekirdekli makinelerdeki çok büyük sunuculara yardımcı olur ve geliştiricileri ideal olarak en az 16 fiziksel çekirdek ister. Bukkit eklentilerinin çoğu, Folia desteği açıkça belirtilmedikçe yüklenmez; aynı yerde toplanan oyuncular da yine tek bir bölgeyi paylaşır. Çoğu topluluk için iyi ayarlanmış bir Paper ya da Purpur sunucusu daha doğru seçimdir.
