Watchdog Thread Crash: Minecraft Sunucusu Donması ve Çözümü
Minecraft sunucunuz yanıt vermeyi keser ve log'da şuna benzer bir mesaj görünür:
[SEVERE] --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A PAPER BUG ---
[SEVERE] The server has not responded for 60 seconds! Creating thread dump...
[SEVERE] --------- Thread Dump ---------
Bu Watchdog Thread Crash'idir. Sunucunun ana döngüsü (main thread) belirli bir süre yanıt vermeyince, Paper'ın Watchdog sistemi "sunucu dondu" olarak değerlendirir ve debug bilgisi toplayarak crash log üretir. Bu rehberde bu hatanın nedenlerini ve çözümlerini anlatıyorum.
Watchdog Nedir?
Paper'ın Watchdog sistemi, sunucunun ana thread'ini izler. Ana thread belirli bir süre (varsayılan 60 saniye) tick işlemezse Watchdog devreye girer:
- Thread dump alır (tüm thread'lerin o anki durumu)
- Crash log oluşturur
- Sunucuyu yeniden başlatır (veya kapatır)
Bu, sonsuz döngü veya bloklanmış işlem gibi kritik durumları tespit etmek için tasarlanmış bir güvenlik mekanizmasıdır.
Yaygın Nedenler
- Plugin sonsuz döngüsü: Bir plugin ana thread'de sona ermeyen bir döngü çalıştırıyor.
- Veritabanı timeout: Plugin, ana thread'de senkron DB sorgusu yapıyor ve DB yanıt vermiyorsa sunucu donuyor.
- Chunk oluşturma yavaşlığı: Çok büyük veya çok sayıda chunk aynı anda üretilmeye çalışılıyor.
- Dünya kaydetme: Çok büyük dünya dosyasının kaydedilmesi ana thread'i uzun süre meşgul edebilir.
- Yetersiz CPU: Sunucu o kadar yüklü ki bir tick 60 saniyeyi aşıyor.
Thread Dump'ı Okumak
Crash log'unda thread dump bölümünü bulun:
"Server thread" #1 prio=5 os_prio=0 tid=0x... nid=0x... runnable
java.lang.Thread.State: RUNNABLE
at com.example.badplugin.SlowMethod.doWork(SlowMethod.java:123)
at com.example.badplugin.MainListener.onTick(MainListener.java:45)
at ...
"Server thread" satırını bulun ve altındaki stack trace'i okuyun. Hangi plugin, hangi metod ana thread'i meşgul ediyor anında görünür.
Çözüm 1: Sorumlu Plugin'i Tespit ve Kaldırma
Thread dump'ta plugin adı gördüyseniz:
- Önce o plugin'i güncelleyin (geliştiricinin bug fix yayımlamış olabilir)
- Güncelleme yoksa plugin'i devre dışı bırakıp Watchdog'un tekrarlayıp tekrarlamadığını izleyin
- Sorun plugin'den kaynaklanıyorsa alternatif arayın veya geliştiriciyle iletişime geçin
Çözüm 2: Watchdog Timeout'u Artırma
Sunucunuz gerçekten yavaş ama crash istemiyorsanız timeout'u artırabilirsiniz:
# server.properties
max-tick-time=120000 # 120 saniye (varsayılan 60000)
Veya Watchdog'u tamamen kapatmak için -1:
max-tick-time=-1
Uyarı: Watchdog'u kapatmak gerçek bir sonsuz döngüde sunucunun sonsuza kadar donmasına neden olur. Üretim ortamında dikkatli kullanın.
Çözüm 3: Asenkron İşlemler
Ana thread'de yapılan DB sorguları ve ağ istekleri en yaygın donma nedenidir. İyi yazılmış pluginler bu işlemleri asenkron (arka plan) thread'lerde yapar. Plugin geliştiricisine bildirin veya async destekleyen alternatif arayın.
Sonuç
Watchdog crash, sunucunun kendini korumasıdır; paniklemek yerine crash log'unu okuyun. Thread dump'taki plugin adı size çözümün %90'ını gösterir. Watchdog'un tekrar tekrar tetiklenmesi ciddi bir performans veya kod sorununa işaret eder; mutlaka köke inin.
💡 Etkileşim için giriş yap.