PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Metin2 "MySQL Server Has Gone Away" Hatası Çözümü

Yazdır

Metin2 "MySQL Server Has Gone Away" Hatası Çözümü

Metin2 PVP sunucularında oyun dosyaları (game/db) ile veritabanı (MySQL/MariaDB) arasındaki bağlantı koptuğunda syserr.txt veya Putty ekranında "MySQL Server Has Gone Away" (Hata Kodu: 2006) uyarısı belirir. Bu hata meydana geldiğinde sunucu ya hiç açılmaz ya da açık olan kanallar (CH) aniden kapanır. Sorunu kökten çözmek için aşağıdaki adımları sırasıyla uygulayabilirsiniz.

1. Yöntem: `my.cnf` Dosyasında Paket Boyutunu Artırma (En Etkili Çözüm)

Bu hatanın en yaygın sebebi, oyun sunucusunun MySQL'e tek seferde göndermeye çalıştığı veri paketinin (Örn: Büyük bir item_proto veya oyuncu verisi yüklenirken) MySQL'in izin verdiği maksimum sınırı aşmasıdır. Sınırı yükseltmek için:

  1. Filezilla veya WinSCP ile sunucunuza bağlanın.
  2. FreeBSD alt yapısında genellikle/var/db/mysql/veya/etc/dizininde bulunan my.cnf dosyasını bilgisayarınıza indirip bir metin düzenleyici ile açın.
  3. Dosya içerisinde[mysqld]etiketinin altına şu komut satırlarını ekleyin (Eğer varsa değerlerini bu şekilde güncelleyin):
    max_allowed_packet = 64M
    wait_timeout = 28800
    interactive_timeout = 28800
  4. Dosyayı kaydedip sunucuya geri yükleyin ve Putty üzerinden MySQL servisini şu komutla yeniden başlatın:
    service mysql restart

2. Yöntem: Veritabanı Zaman Aşımı (Timeout) Ayarlarını Kontrol Etme

Sunucuda anlık oyuncu yoğunluğu azaldığında veya oyun içi sorgular uzun sürdüğünde, MySQL boşta kalan bağlantıları otomatik olarak kapatabilir. Oyun dosyalarınız (game) kapalı olan bu bağlantı üzerinden işlem yapmaya çalıştığında bu hatayı alır.

  • Yukarıdaki 1. yöntemde eklediğimizwait_timeoutveinteractive_timeoutdeğerleri, veritabanının bağlantıyı koparmadan önce bekleyeceği süreyi saniye cinsinden (28800 saniye = 8 saat) uzatarak bu sorunun önüne geçer.

3. Yöntem: Hasarlı ve Şişmiş Log Tablolarını Temizleme

Navicat içerisindeki log veritabanında yer alan tablolar (Örn:log.command_log,log.shout_log) aşırı büyük boyutlara ulaştıysa, sorgu esnasında MySQL kilitlenebilir ve bağlantıyı kesebilir.

  • Navicat programını açın ve "log" veritabanına giriş yapın.
  • Boyutu çok yüksek olan log tablolarına sağ tıklayıp Empty Table (Truncate) seçeneği ile tabloların içini boşaltın.
  • İşlem sonrası tabloları tamamen seçip sağ tıklayarak Maintain -> Optimize Tables yapın.

4. Yöntem: Sunucu RAM ve Swap (Takas Alanı) Yetersizliği

Eğer FreeBSD sunucunuzun RAM kapasitesi yetersiz geliyorsa, işletim sistemi önceliği yüksek olan süreçleri korumak için MySQL servisini (mysqld) arka planda anlık olarak durdurabilir (Kill işlemi). Putty üzerindentop -cyazarak RAM kullanımınızı kontrol edin. Eğer RAM sınırda ise sunucu paketinizi yükseltmeniz veya gereksiz CH sayılarını azaltmanız gerekir.


Bu makale PvPSunucusu için özel olarak hazırlanmıştır.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner