Metin2 sunucusunda lag, donma ve oyundan atılma sorunlarının kaynağını bulma ve çözme rehberi. Sorun ağda mı, sunucuda mı, quest dosyalarında mı?
Oyuncular "lag var" dediğinde bu tek bir sorunun adı değil. Aynı cümleyle üç ayrı şeyi kastediyor olabilirler: ışınlanma gecikmesi, kalabalık anlarda donma ya da oyundan atılma. Üçünün kaynağı da farklı, çözümü de farklı.
Bu rehber sorunu tahmin ederek değil, ölçerek bulmak üzerine. Önce hangi katmanda olduğunu tespit ediyoruz, sonra o katmana özel çözüme geçiyoruz.
Ping kavramının kendisini, değerlerin ne anlama geldiğini ve lokasyonun etkisini oyun sunucusunda ping neden önemli yazımızda anlattık. Burada o temeli tekrar etmiyor, doğrudan Metin2'ye özgü teşhise geçiyoruz.
Önce Ayırın: Üç Farklı Şikâyet
Oyuncudan gelen bildirimi doğru kategoriye koymadan çözüm aramak zaman kaybıdır. Her birinin farklı bir imzası var.
| Şikâyet | Nasıl görünür | Muhtemel katman |
|---|---|---|
| Gecikme | Karakter geç tepki veriyor, ışınlanma yavaş | Ağ (ping) |
| Donma | Herkes aynı anda 2-3 saniye kilitleniyor | Sunucu (CPU / quest) |
| Atılma | Bağlantı kopuyor, giriş ekranına düşüyor | Bağlantı / auth / bellek |
| Girişte bekleme | Karakter seçimi ve oyuna giriş uzun sürüyor | Veritabanı |
En ayırt edici soru şudur: sorun herkeste aynı anda mı oluyor, yoksa tek tek oyuncularda mı? Herkeste aynı anda oluyorsa sunucu tarafındadır. Sadece bazı oyuncularda oluyorsa ağ tarafındadır.
Katman 1: Ağ Gecikmesi
Oyuncu "pingim yüksek" diyorsa bunu doğrulamadan kabul etmeyin. Oyuncunun kendi bağlantısı, mobil internet kullanması ya da aynı ağda indirme yapması da aynı belirtiyi üretir.
Sunucudan oyuncuya doğru ölçün
ping -c 20 OYUNCU_IP
mtr -r -c 20 OYUNCU_IP
mtr çıktısı, gecikmenin hangi sıçramada başladığını gösterir. Kayıp sizin veri merkezinizin çıkışında değil de aradaki bir operatörde başlıyorsa sorun sizde değildir.
Aynı sorunu birden çok oyuncuda arayın
Tek bir oyuncunun gecikmesi kendi bağlantısıdır. Aynı operatörü kullanan birden fazla oyuncuda aynı anda başlıyorsa, o operatörle veri merkezi arasındaki yolda sorun var demektir. Bu durumda sağlayıcınıza bu bilgiyle başvurun; "lag var" demek yerine "X operatöründen gelen oyuncularda şu saatte kayıp başlıyor" demek çözümü hızlandırır.
Coğrafya sabit bir sınırdır
Yurt dışındaki bir sunucuya Türkiye'den bağlanan oyuncunun gecikmesi hiçbir ayarla düşmez; bu fiziksel mesafenin sonucudur. Oyuncu kitleniz Türkiye'deyse sunucunun da Türkiye'de olması gerekir.
Katman 2: Sunucu Kaynaklı Donma
Bu, Metin2'ye en özgü ve en sık yanlış teşhis edilen sorundur. Belirtisi nettir: herkes aynı anda donuyor. Bu bir ağ sorunu değildir; oyun süreci o an bir işle meşguldür ve kimseye cevap veremiyordur.
Neden olur?
Metin2 sunucu yazılımı bir kanalı tek çekirdekte işler. O çekirdek bir işe takıldığında, o kanaldaki herkes bekler. Yani 32 çekirdekli bir sunucuda bile tek bir ağır işlem herkesi kilitleyebilir.
İşlemciyi çekirdek çekirdek izleyin
top -H -p $(pgrep -d, game)
Toplam kullanım %20 görünürken tek bir iş parçacığının %100'de olması, klasik Metin2 darboğazıdır. Ortalamaya bakan araçlar bu durumu göstermez.
En sık üç sebep
- Ağır quest dosyaları. Sık çalışan bir döngü ya da her tıklamada veritabanına giden bir sorgu, tek başına sunucuyu yavaşlatır.
- Zamanlanmış görevler. Donma her saat başı ya da belirli dakikalarda tekrarlıyorsa sebep neredeyse kesinlikle zamanlanmış bir iştir.
- Kalabalık PVP ve boss anları. Aynı ekranda çok sayıda karakter ve hasar hesabı, tek çekirdeği doldurur.
Donmanın saatini kaydedin
Sorun tekrarlıyorsa saatini not alın. Düzenli bir aralık varsa (her saat, her 30 dakika) bu bir zamanlanmış görevdir ve bulunması kolaydır. Rastgele ise oyuncu yoğunluğuyla ilişkilidir.
Katman 3: Oyundan Atılma
Atılma, gecikmeden farklı bir olaydır: bağlantı tamamen kopar. Sebebi genellikle üç yerden birindedir.
Bellek tükenmesi
free -m
dmesg | grep -i "out of memory"
Çıktıda oom-killer kaydı varsa işletim sistemi bellek yetmediği için oyun sürecini öldürmüştür. Bu, "sunucu kapandı" olarak görünür ama aslında kaynak yetersizliğidir.
Bağlantı tablosunun dolması
ss -s
cat /proc/sys/net/netfilter/nf_conntrack_count
Sayı üst sınıra yaklaşmışsa yeni bağlantılar reddedilir; oyuncular atılır ve tekrar giremez.
Auth sunucusunun yorulması
Atılma özellikle giriş sırasında yoğunlaşıyorsa auth tarafına bakın. Kanal sayısı artarken auth kapasitesi aynı kalmışsa bu darboğaz kaçınılmazdır. Mimarinin nasıl kurulduğunu kanal yapısı ve auth sunucusu yazımızda anlattık.
Kayıtları okuyun
tail -f syserr
Atılma anında bu dosyayı açık tutun. Çoğu atılmanın sebebi orada yazılıdır. Hata mesajlarının anlamları için syserr hataları rehberimize bakabilirsiniz.
Katman 4: Veritabanı Gecikmesi
Oyuncular "oyuna girerken bekliyorum" ya da "eşyam kayboldu" diyorsa, büyük olasılıkla veritabanı yazma işlemleri birikmiştir. Eşya aslında kaybolmamıştır; kaydedilmesi gecikmiştir.
mysqladmin -u root -p processlist
mysqladmin -u root -p extended-status | grep -i "slow_queries\|threads_connected"
Yavaş sorgu kaydını açmak, hangi işlemin yorduğunu doğrudan gösterir:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
Bir süre çalıştırıp kayda bakın. Aynı sorgu tekrar tekrar görünüyorsa ilgili quest ya da sistem optimize edilmelidir.
Hızlı Teşhis Tablosu
| Belirti | İlk bakılacak | Muhtemel çözüm |
|---|---|---|
| Sadece bazı oyuncularda gecikme | mtr çıktısı | Operatör yolu, lokasyon |
| Herkes aynı anda donuyor | top -H | Quest optimizasyonu, frekans |
| Belirli saatte donma | Zamanlanmış görevler | Görevi yoğun saat dışına al |
| Toplu atılma | dmesg, ss -s | Bellek veya bağlantı sınırı |
| Girişte bekleme | Yavaş sorgu kaydı | Veritabanı ve disk |
| Kaynak normal, erişim yok | Trafik hacmi | Saldırı ihtimali |
Son satır önemli: işlemci ve bellek normalken sunucuya erişilemiyorsa sorun sunucuda değil hattadır. Bu durumda DDoS koruması tarafına bakmak gerekir.
Oyunculara Nasıl Anlatmalı?
Teknik tarafı çözmek kadar önemli olan bir konu daha var: oyuncular ne olduğunu bilmediğinde en kötü ihtimali varsayıyor.
- Sorunu gördüğünüzü ilk 15 dakikada duyurun. Sessizlik, sunucunun kalitesiz olduğu algısını büyütür.
- Kaynağı biliyorsanız sade bir dille söyleyin. "Bir quest dosyası sunucuyu yavaşlatıyordu, düzeltildi" cümlesi güven verir.
- Çözüldüğünde de duyurun. Sadece sorunu duyurup sonucu söylememek, sorunun sürdüğü izlenimi bırakır.
- Tekrarlayan bir sorunu "düzeldi" diye duyurmayın. İkinci kez yaşandığında güven kaybı ilkinden büyük olur.
Yapılmaması Gerekenler
- Refleksle sunucuyu yeniden başlatmak. Anlık rahatlama sağlar, sebebi gizler ve kanıtı siler.
- Ölçmeden paket yükseltmek. Darboğaz quest dosyasındaysa donanım artırmak parayı harcar, sorunu çözmez.
- Çekirdek sayısını artırmak. Tek kanalın hızı çekirdek sayısına değil frekansa bağlıdır.
- Aynı anda birden çok değişiklik yapmak. Hangisinin işe yaradığını bilemezsiniz.
Özet
Lag tek bir sorun değil, dört ayrı katmanın ortak adı. Doğru katmanı bulmak çözümün yarısıdır: herkeste aynı anda olan donma sunucu, tek tek oyuncularda olan gecikme ağ, girişte bekleme veritabanı, toplu kopma ise kaynak ya da bağlantı sınırı sorunudur.
Sunucunuz büyüdükçe bu darboğazların yeri değişir; ölçekleme tarafını orta seviye Metin2 sunucu sayfamızda, altyapı seçeneklerini Metin2 sunucu paketlerimizde bulabilirsiniz.



