Datafex LogoDatafex
Tüm rehberler

Knight Online sunucusu nasıl kurulur? Windows ve MSSQL gerçeği

Yazan: Yayın: Güncelleme: 4 dk okuma

Knight Online private server, bu sitedeki diğer oyun rehberlerinden temel bir noktada ayrılır: Linux üzerinde çalışmaz. Sunucu süreçleri Windows üzerine derlenmiştir ve veritabanı katmanı Microsoft SQL Server'dır. Yani işletim sistemi bir tercih değil gereklilik: sunucuyu Windows Server kurulu sipariş etmeniz gerekiyor.

Süreç mimarisi

Süreçİşi
MSSQL ServerKarakter, envanter, klan tabloları
AujardVeritabanı ile oyun sunucusu arasındaki köprü
EbenezerOyun dünyası
AIServerYaratık davranışları
LoginGiriş doğrulaması

Başlatma sırası zorunludur: MSSQL → `Aujard` → `Ebenezer` → `AIServer` → `Login`. Aujard ayakta olmadan Ebenezer veritabanına ulaşamaz.

Sıra bozulduğunda ekranda anlamlı bir hata çıkmaz; süreç ya açılır açılmaz kapanır ya da açık kalır ama oyuncu girişinde takılır. Bu yüzden süreçleri tek tek ve aralarında birkaç saniye bekleyerek başlatın, hepsini aynı toplu iş dosyasından aynı anda tetiklemeyin. Sunucu her yeniden başlatmada elle ayağa kaldırılmak zorunda kalmasın diyorsanız, süreçleri bu sırayı koruyan bir zamanlanmış görev veya servis sarmalayıcısına bağlayın.

MSSQL Express sınırı — en sık düşülen tuzak

Express sürümü ücretsizdir ve küçük sunucularda yeterli görünür. Sert sınırları vardır:

  • Buffer pool: yaklaşık 1410 MB
  • Veritabanı boyutu: 10 GB
  • Kullanılabilen çekirdek: en fazla 4

Oyuncu ve envanter tablolarınız bu sınırlara yaklaştığında sunucu yavaşlar ve sunucuya RAM eklemek hiçbir şeyi düzeltmez — sınır donanımda değil sürümdedir. 200-300 eşzamanlı oyuncudan sonra tam sürüme geçmeyi baştan planlayın.

Hangi sürümü çalıştırdığınızı tahmin etmeyin, sorun:

SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('ProductVersion');

Tam sürüme geçtiğinizde bu kez ters yönde bir tuzak var: MSSQL varsayılan olarak bulabildiği belleğin neredeyse tamamını alır ve oyun süreçlerine yer bırakmaz. Üst sınırı elle koyun — makinenin toplam RAM'inden Windows için 2-3 GB ve oyun süreçleri için 2-4 GB ayırıp kalanı verin:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 8192;
RECONFIGURE;

Kaynak hesabı

  • Windows Server tabanı: 2-3 GB
  • MSSQL buffer pool: veritabanı boyutuna göre 4-12 GB
  • Oyun süreçleri toplamı: 2-4 GB

Yani bellek planlamasının büyük kısmı veritabanına gider. 200 oyuncuya kadar 8 GB, 600'e kadar 16 GB, üzerinde 32 GB ve MSSQL'in ayrı sunucuya alınması. 32 GB ve üstünde VDS'in birim maliyeti yükseldiği için karar noktası değişir; fiziksel sunucularda donanımın tamamı tek iş yükünde kalır.

CPU tarafında süreçler ayrı çalıştığı ve MSSQL kendi iş parçacığı havuzunu kullandığı için çekirdek sayısı doğrudan işe yarar. Genel mantık: kaç vCPU ve kaç GB RAM gerekir?

Hesabı kurarken açtığınız slot sayısını değil tepe saatte gerçekten bağlı olan oyuncu sayısını temel alın; ikisini karıştırmak bu oyunda pahalıya çıkar, çünkü asıl büyüyen kalem oyuncu başına bellek değil veritabanı. Ayrımın genel hâli: oyun sunucusunda slot hesabı

Diskte belirleyici olan kapasite değil gecikmedir. MSSQL'in iş yükü çok sayıda küçük rastgele okuma ve yazmadır; buffer pool'a sığmayan her sorgu diske iner ve disk gecikmesi doğrudan oyuncunun gördüğü bekleme süresine dönüşür. Aradaki farkın neden yüzdelerle değil katlarla ölçüldüğü: NVMe SSD nedir?

Portlar

Dışarıya yalnızca iki port açılmalı:

PortNe için
15100Login
15001Oyun

MSSQL'in 1433 portunu dışarıya AÇMAYIN. Bu yaygın ve ciddi bir hatadır; veritabanı yalnızca yerel bağlantı kabul etmelidir. Açık bir 1433, tüm karakter verinizin dışarıya açık olması demektir.

Aynı kural yönetim erişimi için de geçerli: sunucuyu yönetmek için açık bıraktığınız 3389 (RDP) portu, oyun portlarından çok daha fazla otomatik deneme trafiği çeker. Yalnızca kendi IP adresinize izin verin. Ayrıntı ve korunma adımları: RDP ile Windows sunucuya bağlanma

Kullandığınız server files yukarıdakilerden farklı port numaraları bekliyorsa, tahmin etmek yerine dosyalarla gelen yapılandırma dosyasındaki değeri esas alın ve güvenlik duvarını ona göre açın.

Kurulum sırası

  1. Windows Server şablonuyla sunucuyu kurun.
  2. MSSQL Server'ı kurun ve sürüm sınırlarını baştan kontrol edin.
  3. Veritabanlarını geri yükleyin.
  4. Aujardın kullandığı ODBC/bağlantı dizesini tanımlayın.
  5. Süreçleri yukarıdaki sırayla başlatın.
  6. 15100 ve 15001'i açın, 1433'ü kapalı tutun.
  7. Düzenli yedek kurun — MSSQL veri ve log dosyaları ayrı büyür, ikisini de yedekleyin.

Dördüncü adım en çok vakit kaybettiren yerdir. Süreçler 32-bit derlendiği için DSN'i 32-bit ODBC yöneticisinde (C:\Windows\SysWOW64\odbcad32.exe) tanımlamanız gerekir; 64-bit yöneticide oluşturulan bir DSN 32-bit süreçten görünmez ve Aujard "veri kaynağı bulunamadı" diyerek kapanır. İkilinin mimarisinden emin değilseniz önce onu belirleyin, sonra DSN'i doğru yöneticide açın.

Yedinci adımda atlanan ayrıntı kurtarma modelidir. MSSQL yeni veritabanlarını varsayılan olarak FULL kurtarma modelinde oluşturur; bu modelde işlem logu ancak log yedeği alındığında boşalır. Log yedeği almıyorsanız .ldf dosyası veritabanından büyük hâle gelene kadar şişer ve bir gün disk dolduğu için sunucu durur. İki seçenekten birini bilinçli seçin: ya düzenli log yedeği alın, ya kurtarma modelini SIMPLE'a çekip yalnızca tam yedekle çalışın.

Bir de "yedek" sandığımız şeye dikkat: MSSQL çalışırken .mdf ve .ldf dosyalarını kopyalamak tutarlı bir yedek üretmez. Yedek BACKUP DATABASE ile alınır ve alındıktan sonra başka bir makinede geri yüklenerek denenir. Yaklaşımın tamamı: sunucu yedekleme stratejisi

Sonraki adım

Eşzamanlı oyuncu sayısına göre önerilen paketleri ve Knight Online'a özgü soruları tek sayfada topladık: Knight Online sunucu paketleri. Belleğin büyük kısmı MSSQL'e gittiği için RAM ile vCPU'yu ayrı ayrı belirlemek isterseniz sunucu yapılandırıcı aylık tutarı anında gösterir.

Bu rehberdeki bilgiyle ilerlemek isterseniz:

Knight Online için önerilen paketleri görün

İlgili rehberler