Minecraft Sunucusunda Lag ve TPS Düşüşü: Nedeni Nasıl Bulunur, Nasıl Düzeltilir?
“Sunucumda lag var” cümlesi genellikle üç ayrı arızadan birini anlatır ve üçünün çözümü farklı yerdedir. Sunucunun kendi işlem döngüsü yavaşladığında bağlı olan herkes aynı anda takılır. Bağlantı gecikmesi yüksek olduğunda yalnızca belirli oyuncular karakterin geri sekmesini yaşar. Oyuncunun bilgisayarı zorlandığında ise sorun ekran akıcılığındadır ve sunucu tarafında hiçbir iz bırakmaz. Düzeltmeye giden ilk adım, hangisiyle uğraşıldığını ayırmaktır.
Sunucu tarafındaki yavaşlamanın ölçüsü TPS, yani saniyedeki tick sayısıdır. TPS düşüyorsa neden sunucunun içindedir ve dünya içeriği, eklentiler, oyuncu davranışı veya makine kaynakları arasında aranır. TPS 20 değerinde sabitken şikayet sürüyorsa neden sunucu yapılandırmasında değildir, orada aramak zaman kaybı olur.
Aynı kelimeyle anılan üç ayrı sorun
Belirtiler birbirine benzediği için bu ayrım çoğu zaman atlanır. Üç durumu ayıran şey kimin etkilendiği ve hangi değerin bozulduğudur.
Sorunun türü | Kimi etkiler | Bakılacak değer | Çözümün yeri |
Sunucu yavaşlaması | Bağlı olan herkesi aynı anda | TPS ve tick süresi | Sunucu içeriği ve kaynakları |
Bağlantı gecikmesi | Belirli oyuncuları | Ping | Ağ yolu ve bağlantı |
İstemci yavaşlaması | Tek oyuncuyu | FPS | Oyuncunun bilgisayarı ve oyun ayarları |
Üçü aynı anda da görülebilir. Buradaki konu birincisidir: sunucu tarafında ortaya çıkan ve herkesi aynı anda etkileyen yavaşlama.
TPS neyi ölçer ve neden 20'nin üstüne çıkmaz
Minecraft sunucusu dünyayı kesintisiz değil, tick adı verilen adımlarla işler. Her tick içinde mob hareketleri, redstone durumları, sıvı akışı, bitki büyümesi, envanter işlemleri ve oyuncu eylemleri sırayla hesaplanır. Hedef saniyede 20 tick olduğu için bir tick'e düşen süre 50 milisaniyedir. Tick'in işi bu bütçeyi aşarsa sunucu takvimi tutturamaz, TPS 20 değerinin altına iner ve oyun içinde her şey ağır çeker gibi ilerlemeye başlar.
TPS 20 değerinin üzerine çıkmaz, çünkü 20 bir tavan değil hedeftir. Bu nedenle TPS tek başına ne kadar boşluk kaldığını göstermez. Tick başına harcanan süreyi gösteren ölçüm daha erken uyarır: TPS hâlâ 20 görünürken tick süresi 45 milisaniyeye tırmanmışsa sunucu sınırın hemen altında çalışıyordur ve ilk düşüş kalabalık bir akşamda orada başlar.
Tick bütçesini tüketen başlıca nedenler
Sunucuyu zorlayan iş kalemleri birbirine benzemez. Bazıları oyuncu sayısıyla birlikte büyür, bazıları tek bir yapı yüzünden ortaya çıkar ve sunucu boşken bile çalışmayı sürdürür.
- Varlık birikimi: yere düşen eşyalar, çoğalan hayvanlar, çiftlik odalarında bekleyen yaratıklar ve fırlatılan mermiler her tick'te tek tek işlenir. Sayı arttıkça maliyet düzenli biçimde büyür.
- Chunk yükü: oyuncular haritada ilerledikçe yeni bölgeler üretilir ve belleğe alınır. Dünya üretimi tick içindeki en pahalı işlerden biridir.
- Redstone ve hopper düzenleri: sürekli çalışan saat devreleri ile uzun hopper zincirleri, yakınında kimse olmasa bile iş üretmeye devam eder.
- Eklenti ve mod maliyeti: her tick'te tekrarlanan zamanlanmış görevler, geniş alan taramaları ve olay dinleyicileri toplamda büyük bir pay tutabilir.
- Otomatik kayıt ve disk: dünya diske yazılırken oluşan duraklamalar, depolama yavaşsa doğrudan tick süresine yansır.
- Bellek temizliği: Java tarafındaki bellek temizleme duraklamaları, ayar yanlışsa belirli aralıklarla tekrarlayan ani TPS düşüşü biçiminde görünür.
Bu kalemlerin ortak yanı, oyuncu sayısıyla doğru orantılı olmamalarıdır. Kontrolsüz büyüyen tek bir otomatik çiftlik, elli kişilik bir sunucuyu on kişilik bir sunucudan daha çok zorlayabilir. Bu yüzden bir minecraft oyun sunucusu kiralarken panelin kaynak izleme ekranı sunması, ilk günden sonra en çok işe yarayan ayrıntılardan biri olur. Hangi kalemin yükü büyüttüğünü ekrandan görebilmek, tahminle ayar değiştirmeye göre çok daha kısa sürede sonuç verir.
Nedeni daraltmanın sırası
Ayar değiştirmeden önce ölçmek, denemeyi rastgele olmaktan çıkarır. Aşağıdaki sıra en kısa süren kontrolden en uzun sürene doğru ilerler.
- TPS ve tick süresini iki ayrı zamanda kaydedin: şikayetin geldiği yoğun saatte ve sunucunun sakin olduğu saatte.
- Düşüşün oyuncu sayısıyla ilişkisini kontrol edin. Sakin saatte de TPS düşükse neden oyuncu yükü değildir.
- Varlık sayımı ile yüklü chunk sayımını alın. Beklenenin çok üstünde bir varlık sayısı çoğu zaman tek başına açıklayıcıdır.
- Eklenti ve modları test dünyasında gruplar halinde devre dışı bırakıp ölçümü her seferinde tekrarlayın.
- Sunucu yazılımının sunduğu profil çıktısını alın. Hangi görevin tick içinde ne kadar süre harcadığı en net buradan görünür.
- Son adımda makine kaynaklarına bakın: tek çekirdek doluluğu, bellek kullanımı ve disk bekleme süresi.
Sunucu tarafında işe yarayan düzeltmeler
Ölçüm hangi kalemi işaret ediyorsa düzeltme oradan başlar. Varlık kaynaklı yükte chunk başına varlık sınırı tanımlamak, yerdeki eşyaları birleştirmek ve çiftlikleri toplayıcı yapılarla yeniden kurmak doğrudan sonuç verir. Chunk kaynaklı yükte harita sınırı koymak ve oyunculara açılacak alanı önceden üretmek, keşif sırasındaki ani düşüşleri ortadan kaldırır. Sürüme göre görüş mesafesi ve simülasyon mesafesi gibi ayarları bir kademe düşürmek, aynı donanımda hissedilir bir rahatlama sağlar.
Eklenti kaynaklı yükte çözüm çoğunlukla eklentiyi kaldırmak değil, aynı işi daha hafif yapan bir alternatifle değiştirmek veya tarama aralığını uzatmaktır. Otomatik kayıt aralığını sunucunun boş olduğu saatlere kaydırmak, kayıt sırasındaki duraklamayı oyuncuların hissetmesini engeller. Her değişikliği tek tek uygulayıp ölçümü yenilemek önemlidir; aynı anda beş ayar değiştirildiğinde hangisinin işe yaradığı bilinemez. Denemelere başlamadan önce dünya yedeğini almak da geri dönülecek bir nokta bırakır.
Donanım ne zaman gerçekten sınır olur
Yazılım tarafı temizlendiği halde tick süresi yüksek kalıyorsa sıra makineye gelir. Minecraft sunucusunun ana oyun döngüsünün büyük bölümü tek iş parçacığında çalıştığı için çekirdek sayısını artırmak tek başına TPS'i yükseltmez; belirleyici olan tek çekirdeğin işleme gücüdür. Disk tarafında chunk okuma ve yazma sıklığı yüksek olduğundan NVMe SSD gibi hızlı depolama, kayıt duraklamalarını kısaltır. Bellekte ise gereğinden fazlasını ayırmak da çözüm değildir, ayrılan alan büyüdükçe temizleme duraklamaları uzayabilir. Ağ tarafındaki 1 Gbps port ise bağlantı kalitesini ilgilendirir, tick süresine etkisi yoktur.
Saganetwork sunucuları Vodafone Veri Merkezi'nin kurumsal altyapısında barındırılmaktadır. Oyun yönetim paneli üzerinden kaynak izleme, sürüm değiştirme, eklenti ve modpack kurulumu ile yedekleme aynı ekrandan yapılabildiği için ölçüm ile düzeltme arasındaki mesafe kısalır. Minecraft paketlerinde seçilen paket yetersiz kalırsa bir üst pakete ücretsiz yükseltme yapılabildiğinden, önce yazılım tarafını temizleyip kaynağı yalnızca gerçekten gerektiğinde büyütmek makul bir sıra olur.
Lag sorununun herkese uyan tek bir reçetesi yok. Bir sunucuda tıkanma noktası kontrolsüz büyüyen bir mob çiftliği olurken, bir diğerinde her tick'te çalışan bir eklenti veya yavaş depolama çıkabilir. Doğru sıra, hangi kalemin tick bütçesini tükettiğini önce ölçmek, düzeltmeleri tek tek uygulamak ve kaynak artışını ancak ölçüm bunu gerektirdiğinde gündeme almaktır.


Türkçe karakter kullanılmayan ve büyük harflerle yazılmış yorumlar onaylanmamaktadır.