Welches OS/Hardware für MMO Server?



  • Mich hätte mal interessiert, wie leistungsstark eigentlich ein Rechner sein
    muss, um als MMO-Server brauchbar zu sein. Für so einen herkömmlicher PC von
    der Stange mit Windows druff ist es ja womöglich gar nicht sonderlich sinnvoll,
    mit dem Winsock-API eine Art MMO-Server-Framework zu basteln, wenn man sich
    jeden Client als separaten Worker-Thread vorstellt + die Schwierigkeit, unter Windows auch nur irgend etwas zu synchronisieren (geschweige denn hunderte oder gar tausende Clients bzw. 'Neben-' Server). Vermutlich hat das so ein PC von der
    Stange und mit Windows einfach leistungsmäßig nicht drauf.
    Also welche Art von Rechner und was für ein OS (hoffentlich auch mit so einer Art
    Winsock-API) sollte ich mir denn für so ein MMO-Server-Framework (potentiell mit
    der Möglichkeit, einen Teil der Clients von einem Neben-Server übernehmen zu
    lassen) denn kaufen ? Angeblich soll ja FreeBSD recht gut für sowas geeignet sein,
    aber auf welcher Hardware ?
    Danke, wenn sich jemand gut mit dem MMO-Server auskennt!



  • Ich bin zwar kein Experte was MMO Server angeht, aber das Problem mit vielen Threads bzw. Prozessen und deren Synchronisierung hast du auf jedem OS deiner Wahl. Mit Windows hat das rein gar nichts zu tun, das liegt daran dass ein MMO Server einfach alles andere als triviale Software ist. Aber du kannst dir ja mal Linux anschaun wenn du meinst, Berkley Sockets werden so ziemlich unter jedem OS unterstützt. Jeder Client als eigener Thread wird übrigens nicht sehr sinnvoll sein, ganz egal auf welchem OS...

    Was die erforderliche Hardware angeht: Das hängt wohl stark von deiner Anwendung ab. Grundsätzlich will man für Server normal Multiprozessorsysteme mit viel Speicher. Wenn wir von einem richtigen MMO Game reden dann reden wir ohnehin nicht von einem Server sondern von ein paar hundert oder mehr...



  • Ich habe jahrelang einen Rechner mit einem Athlon XP 2400+ als Server benutzt. Zwar muss man dazu sagen, dass nie viel mehr als 150 Leute online waren, aber die CPU-Auslastung lag auch dann i.d.R. nicht über 1-2%.
    Ausnahme ist, wenn sich der Großteil dieser Leute am selben Ort aufhält (wegen Event o.ä.), dann lag die CPU-Auslastung auch schon mal deutlich über 10%, wobei es im Bedarfsfall auch noch deutliches Optimierungspotential im Servercode gegeben hätte.

    Aber auch bei allen Optimierungen wirst du keine mehrere tausend Leute mit einer solch schwachen CPU bedienen können. Der Server würde schnell zusammenbrechen, wenn sich sehr viele Leute an einem Ort sammeln, was einfach daran liegt, dass der Aufwand quadratisch mit der Anzahl der Leute auf einem Fleck steigt (x Leute machen etwas, was jeweils x oder x-1 Clients mitgeteilt werden muss).

    Kommt also letztendlich darauf an, wie viele Spieler du pro Server unterstützen möchtest, wie effizient der Server geschrieben ist und wie viele Spieler maximal an einem Ort erwartet werden. Willst du etwa epische 1000 vs. 1000-Schlachten ermöglichen, wären das also beispielsweise eher viele.



  • Hallo,

    ich denke das kommt ganz auf das MMO drauf an und besonders die Definition von Massively !!!
    100 Player würde ich nicht als massiv definieren.
    Die prinzipielle Grenze ist doch an der Stelle, wo jeder Computer an seine physikalischen Grenzen stößt.
    Dann braucht man ein Spiel das auch über Rechner-Grenzen hinweg skaliert. Da reicht es nicht einfach nur Threads zu starten, die einzelnen Nodes müssen auch untereinander kommunizieren.
    An dieser Stelle verweise ich immer gerne auf WoW. Da läuft als skalierbare Architektur eine Oracle-Datenbank im Hintergrund.
    Das bedeutet pro "Welt" hat man im Backend ca. 20 Quad-Core Nodes als Datenbank-Cluster zusammengeschaltet. Pro DB-Node kommen dann wieder X - User Server als Front-End.
    Pro User-Server hängen dann wieder Y Player dran.
    Setze ein für X = 20 und Y = 500;
    20 * 20 * 500 = 200.000 User pro DB-Cluster.

    Ich denke hier wird deutlich, das weder WinAPI noch PCs das Problem darstellen.
    Sondern das Verständnis von skalierbarer Software-Architektur.

    PS: BSDs sind Linux überlegen, weil sie einen besseren Kernel-Scheduler haben. Ab einem Verhältnis von Threads / CPUs > 50, 100 macht sich das bemerkbar.


Anmelden zum Antworten