Oyun sunucusu işletenlerin en sık yaptığı hata, oyuncu sayısı arttıkça daha büyük donanım kiralamaktır. Çoğu durumda darboğaz işlemci gücü değil; yanlış kurulmuş bir veri akışı veya tek iş parçacığına sıkışmış bir döngüdür. Kendi oyun altyapımızı işletirken karşılaştığımız gerçek darboğazları sırayla yazıyoruz.
1. Tek iş parçacığına sıkışan ana döngü
Birçok oyun sunucusu yazılımı dünya simülasyonunu tek bir iş parçacığında çalıştırır. Bu durumda 32 çekirdekli yavaş bir işlemci, 8 çekirdekli hızlı bir işlemciden daha kötü sonuç verir. Çözüm çekirdek eklemek değil, çekirdek başına frekansı yüksek donanım seçmek ve mümkünse oyun dünyasını birden fazla sürece (kanal/bölge) bölmektir.
2. Her tıklamayı veritabanına yazmak
En yaygın ve en pahalı hata bu. Oyuncu envanteri, konumu veya sayacı her değiştiğinde veritabanına yazan bir kurgu 200 oyuncuda sorunsuz görünür, 3.000 oyuncuda disk kuyruğunu doldurur ve tüm sunucuyu bekletir. Çözüm: sıcak veriyi bellekte tutmak, yazmaları biriktirip toplu göndermek, kritik olmayan güncellemeleri belirli aralıklarla kaydetmek.
3. Sık çalışan zamanlayıcılar
Saniyede bir çalışan bir kontrol, 3.000 oyuncu için saniyede 3.000 işlem demektir. Oyun içi görev, buff kontrolü veya panel köprüsü gibi işler için zamanlayıcı sıklığı gerçek ihtiyaca göre ayarlanmalı; aksi halde donanımın tamamı kendi kendini kontrol etmeye harcanır.
4. İndeks eksikliği
Oyuncu sayısı arttıkça tablolar büyür; indekslenmemiş bir sorgu 10.000 satırda fark edilmez, 5 milyon satırda sunucuyu durdurur. Yavaş sorgu kaydını açıp en pahalı on sorguyu düzeltmek, genelde donanım yükseltmesinden daha fazla kazanç verir.
5. Veritabanının oyunla aynı makinede olması
Küçük ölçekte pratiktir; büyüdüğünüzde oyun süreci ile veritabanı aynı diski ve belleği paylaşmaya başlar. Belirli bir eşikten sonra veritabanını ayrı bir sunucuya taşımak, aynı paraya iki kat kapasite verir.
6. DDoS saldırısı
Oyun sunucuları en sık saldırıya maruz kalan sistemlerdir — rakip işletmeci veya cezalandırılmış bir oyuncu tarafından saldırı sıradan bir olaydır. Ağ kenarında hacim filtresi yoksa tek bir saldırı sunucunuzu saatlerce kapatır. Uygulama katmanı saldırıları için oyun protokolüne özel kural yazmak gerekir; genel bir web güvenlik duvarı burada yetersizdir.
7. Yama dağıtımı ve kesinti
Her güncellemede tüm oyuncuları saatlerce dışarıda bırakan bir yama akışı, oyuncu kaybının sessiz nedenidir. Yama dosyalarının bir dağıtım sunucusundan artımlı inmesi ve başlatıcının bütünlük doğrulaması yapması, kesintiyi dakikalara indirir.
8. Hile
Teknik olarak bir "performans" sorunu değil ama etkisi en büyük olan madde. Hile yaygınlaştığında dürüst oyuncu gider; sunucu teknik olarak sapasağlam ama boş kalır. Koruma katmanlı kurulmalı ve kritik hesaplar sunucu tarafında yeniden doğrulanmalıdır. Bu konuda MGS Anti-Cheat sayfasında ayrıntı var.
Önce ölçün, sonra büyütün
Darboğazı bulmanın yolu tahmin değil ölçümdür: işlemci kullanımını çekirdek bazında izleyin, yavaş sorgu kaydını açın, disk bekleme süresine bakın, ağ paket kaybını ölçün. Çoğu projede "daha büyük sunucu" kararı, bu dört grafiğe bakıldığında gereksiz çıkıyor.
Oyun tarafı için yapılandırılmış altyapıyı oyun sunucusu hizmetimizde bulabilirsiniz.