Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Oyuncular lag yaşadığında sorunun CPU’da mı, ağda mı, yoksa oyunun kendi döngüsünde mi olduğunu hızla ayırt etmek gerekir. Bu rehberde bir oyun sunucusunda gecikme ve performans izleme için Linux’un yerleşik ve yaygın araçlarını kullanacağız: CPU ve bellek metrikleri, ağ arabirimi ve soket sayaçları, paket kaybı ölçümü ve sürekli kayıt alan küçük bir betik.
Rehber, oyun sunucusu barındıran yöneticilere ve hosting destek ekiplerine hitap eder. Temel kurulum ve ilk ölçümler yaklaşık 30-40 dakika sürer. Tick hızı veya FPS gibi oyuna özgü değerler her oyunda farklı yerden okunur; bu rehber o değerleri oyunun kendi konsolundan ve belgesinden okumanızı, burada anlatılan sistem metrikleriyle yan yana koymanızı önerir.
Gereksinimler
- Oyun sunucusunun çalıştığı Linux sunucuya sudo erişimi
- Yönetici olarak sysstat, htop, mtr ve iproute2 araçlarını kurma yetkisi
- Oyunun konsol veya günlük çıktısına erişim (tick/FPS değeri için)
- Sorunun yaşandığı oyuncudan veya ayrı bir noktadan ağ testi yapabilme imkânı
Adım adım oyun sunucusu performans izleme
1. İzleme araçlarını kurun
# Debian/Ubuntu
sudo apt update
sudo apt install -y sysstat htop mtr-tiny iproute2 iftop
# AlmaLinux/Rocky
sudo dnf install -y sysstat htop mtr iproute iftopDebian tabanlı sistemlerde sysstat’ın veri toplamasını açmak için /etc/default/sysstat dosyasında ENABLED=true yapıp servisi başlatabilirsiniz. RHEL tabanlı sistemlerde sysstat servisini etkinleştirin.
sudo systemctl enable --now sysstatiftop paketi RHEL tabanlı sistemlerde ek depo gerektirebilir; bulunamazsa bu araç olmadan da devam edebilirsiniz.
2. CPU’yu çekirdek bazında izleyin
Oyun sunucularının çoğu ana döngüsünü tek bir iş parçacığında çalıştırır. Bu yüzden toplam CPU yüzdesi düşük görünürken tek çekirdek tavana vurmuş olabilir. Çekirdek bazında bakın.
mpstat -P ALL 2 5
pidstat -u -p $(pgrep -f oyun | head -1) 2 5Burada oyun yerine sürecinizin adının bir parçasını yazın. Ana iş parçacığı bir çekirdeği sürekli %90 üzerinde tutuyorsa tick süresi uzar. %steal değerinin yüksek olması, sanal sunucuda ana makinenin CPU’yu paylaşmasına işaret eder ve sağlayıcıyla görüşmeyi gerektirir.
3. Bellek ve disk baskısını kontrol edin
free -h
vmstat 2 5
iostat -x 2 3vmstat çıktısında si ve so sütunları sürekli sıfırdan büyükse sistem swap kullanıyordur ve bu ani takılmalara yol açar. Harita kaydı veya yedekleme anındaki disk gecikmeleri iostat çıktısındaki await sütunundan anlaşılır.
4. Ağ arabirimi ve soket sayaçlarına bakın
ip -s link show
sar -n DEV 1 5
sudo ss -uampip -s link çıktısında RX ve TX tarafındaki errors, dropped ve overrun sayıları artıyorsa arabirim veya sürücü tarafında sorun vardır. ss çıktısındaki rb ve d (drop) değerleri, oyun sürecinin UDP alım tamponunun dolup paket düşürdüğünü gösterebilir.
UDP protokol sayaçlarını da kontrol edin:
nstat -az | grep -i -E 'Udp|InErrors|RcvbufErrors'UdpRcvbufErrors artıyorsa alım tamponu yetersizdir. Tamponu büyütmeden önce oyunun belgesindeki önerilere bakın; genel sistem sınırı net.core.rmem_max değeridir ve değişiklik kalıcı olarak /etc/sysctl.d/ altında tutulmalıdır.
5. Paket kaybı ve gecikmeyi ölçün
Sorun yaşayan oyuncunun bulunduğu ağdan sunucuya, mümkünse tersine de ölçüm alın. Sunucudan test için:
ping -c 50 <HEDEF_IP>
mtr -rwzc 100 <HEDEF_IP>mtr raporunda yalnızca son atlamadaki kayıp gerçek kayıptır; ara atlamalarda görünen kayıp çoğu zaman o yönlendiricinin ICMP yanıtlarını sınırlamasından kaynaklanır. Kayıp belirli bir atlamadan itibaren sonraki tüm atlamalarda da görünüyorsa sorun orada başlıyordur ve bu bilgiyi sağlayıcıya iletmek işe yarar.
6. Tick hızı veya FPS’i sistem metrikleriyle eşleştirin
Çoğu oyun sunucusu tick süresini ya da sunucu FPS değerini konsol komutuyla veya günlükte raporlar. Komutun adı oyuna göre değiştiği için ilgili oyunun belgesine bakın. Önemli olan, bu değerin düştüğü anı CPU, bellek ve ağ metrikleriyle aynı zaman çizelgesine koymaktır.
7. Sürekli kayıt alan bir betik kurun
Sorun genellikle siz bakmadığınızda olur. Her dakika temel metrikleri bir dosyaya yazan basit bir betik, olay sonrası inceleme için yeterlidir.
sudo tee /usr/local/bin/oyun-izle.sh >/dev/null <<'EOF'
#!/bin/bash
umask 077
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DOSYA=/var/log/oyun-izle.log
{
date '+%F %T'
uptime
vmstat 1 2 | tail -1
ip -s link show | grep -A1 -E 'RX:|TX:' | head -8
nstat -az UdpRcvbufErrors UdpInErrors
} >> $DOSYA
EOF
sudo chmod 750 /usr/local/bin/oyun-izle.sh
echo '* * * * * root /usr/local/bin/oyun-izle.sh' | sudo tee /etc/cron.d/oyun-izle >/dev/nullCron kısıtlı bir PATH ile çalıştığından betikte PATH açıkça tanımlandı; aksi halde RHEL tabanlı sistemlerde /usr/sbin altındaki ip ve nstat bulunamayabilir. Log dosyası büyüyeceği için logrotate ile döndürmeyi unutmayın.
Doğrulama
Betiğin çalıştığını bir dakika bekleyip kontrol edin:
sudo tail -n 20 /var/log/oyun-izle.log
mpstat -P ALL 1 3Beklenen sonuç: günlükte dakikalık zaman damgalı satırlar ve mpstat çıktısında çekirdek bazında yük görünmesi. Ardından bir ping/mtr testiyle paket kaybı ve gecikme değerlerinin sıfır veya düşük olduğunu doğrulayın.
Sık karşılaşılan sorunlar
- Toplam CPU düşük ama oyun takılıyor: Tek iş parçacığı sınırlanmıştır. mpstat ile çekirdek bazında bakın ve CPU frekansı yönetimini kontrol edin.
- Belirli saatlerde periyodik takılma: Yedekleme, log döndürme veya cron işleri çakışıyor olabilir. İş zamanlarını oyun saatleri dışına alın.
- Paket kaybı sadece akşamları görülüyor: Sağlayıcı ağında yoğunluk olabilir. mtr raporlarını zaman damgasıyla toplayıp sağlayıcıya iletin.
- UdpRcvbufErrors sürekli artıyor: Oyun sürecinin işlem hızı yetmiyordur veya tampon küçüktür; önce CPU darboğazını eleyin.
- sysstat verisi boş: Servis etkin değildir ya da toplama kapalıdır; yukarıdaki etkinleştirme adımını uygulayın.
Güvenlik ve bakım notları
- İzleme günlüklerinde kullanıcı IP’leri bulunabilir; dosya izinlerini kısıtlayın ve saklama süresini sınırlayın.
- Yönetim ve izleme arayüzlerini (örneğin metrik toplayıcıları) internete açmayın; yalnızca yönetim ağından erişilsin.
- Eşik değerleri için alarm kurun: CPU, swap kullanımı, paket düşüşü ve disk doluluğu.
- Ölçümleri normal günlerde de kaydedin; sorun anındaki değerleri kıyaslayabileceğiniz bir temel çizgi oluşur.
- Ağ kaynaklı sorunlarda ölçümleri sağlayıcıya iletmek için zaman damgalı ve tekrarlanabilir kayıt tutun.
Sık sorulan sorular
Oyuncuların ping değeri yüksekken sunucu tarafında neye bakmalıyım?
Önce sunucu CPU’sunda tek çekirdek tavanı, swap kullanımı ve UDP tampon hatalarına bakın. Bunlar temizse sorun büyük olasılıkla oyuncu ile sunucu arasındaki ağ yolundadır ve mtr ile yol analizi gerekir.
Tick hızı düşerse her zaman CPU mu yetersizdir?
Hayır. Eklentiler, büyük harita nesneleri, disk gecikmesi veya ağ tamponu taşması da tick süresini uzatır. Tick düşüşü anındaki sistem metriklerini karşılaştırmak nedeni ayırt etmenizi sağlar.
İzleme için Prometheus gibi bir sistem şart mı?
Şart değil; küçük kurulumlarda bu rehberdeki betik yeterlidir. Birden fazla sunucunuz varsa merkezi bir metrik sistemi trend takibini kolaylaştırır, ancak onu yönetim ağında tutmanız gerekir.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- Oyun sunucusunda DDoS saldırısı sırasında olay yönetimi: ilk 30 dakikaOyun sunucusunda DDoS saldırısı sırasında ilk 30 dakikada tespit, sağlayıcı iletişimi, hafifletme, kayıt toplama ve oyuncu bilgilendirmesini düzenli bir olay planıyla yönetin.
- Pterodactyl oyun sunucusu paneli güvenliğiPterodactyl oyun sunucusu panelini genel ilkelerle güvenli hale getirin: HTTPS, iki adımlı doğrulama, Wings port kısıtlaması, yedekleme, güncelleme ve yetki ayrımı.
- SteamCMD ile Linux’ta oyun sunucusu kurulumuSteamCMD ile Linux üzerinde ayrıcalıksız bir kullanıcıyla oyun sunucusu kurun; güncellemeyi otomatikleştirin, systemd servisi tanımlayın ve yalnızca gereken portları açın.
- RCON ve yönetim erişimini güvene almaRCON ve diğer uzaktan yönetim arayüzlerini internete açmadan kullanmak için güçlü parola, güvenlik duvarı ve SSH tüneli yapılandırmasını adım adım uygulayın.