mmofacts.com

Wie viele User verkraftet ein Server? Was sind eure Erfahrungen?

gepostet vor 15 Jahre, 8 Monate von mar1us

Hi,

ich weiß, dass es hier viele Beiträge zum Thema Perfomance gibt und ich habe schon einen ganzen Haufen von denen gelesen aber nirgends alle Infos gefunden, die ich gerne lesen würde. Deshalb mache ich mal einen neuen Beitrag auf und hoffe nicht gesteinigt zu werden. :-)

Vielleicht hier eine kleine Vorgeschichte zu meiner Frage:

Wir (2-Mann-Entwicklerteam) basteln seit Jahren in unserer Freizeit an unserem online Fussballmanager und hatten im Laufe der Zeit immer wieder mal mit Performanceproblemen zu kämpfen, die wir früher oder später in den Griff bekommen haben. So haben wir z.B. zu den Anfangszeiten unseres Games, als es noch kaum User hatte, diverse "mächtige" SQL-Abfragen eingebaut, die bei wenigen Spielern und entsprechend wenig Daten in der DB (MySQL 5) relativ gut liefen, aber mit der Zeit zu ordentlichen Problemen führten. Wir haben mittlerweile unseren Code nach solchen Perfomancen-Fressern durchforstet und vieles optimiert, was auch sichtlich zum Performancegewinn führte. Trotzdem kommen wir wieder zu Stoßzeiten, zu denen 400+ User gleichzeitig online sind an die Grenzen und die Seite antwortet sichtlich langsamer.

Unsere Serverumgebung besteht aktuell aus 2 Servern. 1 Webserver (mit Apache 2.2.4;Win2k3 Server; AMD X2 5200+;4 GB RAM) und 1 Datenbankserver (MySQL 5; Win2k3 Server 64bit; Core2Quad 2,5;8GB RAM). Wenn ich mir zu den Stoßzeiten die Auslastung der Server angucke, dann ist da eigentlich noch einige Luft nach oben (CPU im Schnitt bei 50%; RAM bei ca. 60-70%). Dabei setzen wir PHP für die Webseite und eine GameEngine (VB6 - duck weg) auf dem Datenbankserver zur Spielberechnung & Co. ein.

Die eigentliche(n) Frage(n):

Jetzt stelle ich mir die Frage, was eure Erfahrung sind? Wie viel User gleichzeitig verkraften eure Server (mit welcher Hardware)? Würdet ihr sagen, dass bei unserer Umgebung eine Userzahl von rund 400-500 online Usern wirklich das Ende der Fahnenstange ist, oder meint ihr eher, dass wir scheinbar immer noch eine zu perfomancefressende Programmierung anwenden?

Habt ihr vielleicht auch noch Tipps parat (z.B. Analysetools)? Bin für jede konstruktive Antwort dankbar.

Des Weiteren würde mich auch eure Erfahrung mit Clustern/Load Balancing (Datenbank und Webserver) interessieren (z.B. mit welchem Perfomancegewinn ist zu rechen? welche Probleme können auftreten...)? In diesem Bereich bin ich noch ein totaler Newbie. Ist es sehr kompliziert in das Thema einzusteigen bzw. es einzuführen?

gepostet vor 15 Jahre, 8 Monate von Kallisti

Wie viele Menschen passen in Fußballstadion?

Naja allem voran mal die Menge für die es entsprechend gebaut wurde.

Die Frage lässt sich wohl so pauschal nicht beantworten. Beim einen Spiel bedeutet eine Kampfberechnung eine Zeile Formel, beim anderen läuft eine Simulation ab, die zig Faktoren berücksichtigt und auch Interaktion ermöglicht. Beim einen Spiel gibt es kaum zeitgesteuerte Events, beim anderen Hunderte pro Sekunde.

Ich finde das Thema Skalierbarkeit auch sehr interessant, aber ich würde dabei als erstes überlegen in welche Teilkomponenten oder Tiers man das Spiel weiter untergliedern kann und an welchem Punkt der Status erreicht ist, an dem die schwächste Komponente nicht mehr weiter nach oben skalieren kann. Dann erst macht es richtig Sinn genau diese zu optimieren.

Nun habe ich keine Ahnung von irgendwelchen hochgestochenen Analysetools, aber ich würde im Zweifel ganz pragmatisch, fricklerisch an die Sache gehen und mir einfach ein paar Scripts basteln, die typisches Userverhalten simulieren. Unterteilt in versch. Kategorien. Dann einfach mal testen und eine entsprechende Menge aktiver Spieler simulieren und schauen was passiert. ;)

gepostet vor 15 Jahre, 8 Monate von Bringer

Ich kann diesbzgl. nur Erfahrungen mit einer recht unoptimierten PHP/MySQL Engine auf einem Debian Edge System vorweisen.

Mit einem einzelnen http://www.hetzner.de/hosting/produkte_rootserver/ds8000/ hatten wir da bei 300 gleichzeitig aktiven Usern absolut keinerlei störende Verzögerungen.

Rein rechnerisch ermittelt hätten wir wohl pro ds8000 ca 2k gleichzeitig aktive User verkraftet - erste merkliche laggs (Ladezeitverzögerungen um 1-2 sek) hatten wir in Spitzenzeiten ab 800 Usern aufwärts - wobei das wohl eher an der schlecht Strukturierten DB lag.

Was mir bei unserem jetzigen Projekt vorschwebt, ist der experimentelle Einsatz von SSDs um die langsamen Plattenzugriffe auf die HDD zu umgehen.

gepostet vor 15 Jahre, 8 Monate von mar1us

Original von Kallisti

Wie viele Menschen passen in Fußballstadion?

Naja allem voran mal die Menge für die es entsprechend gebaut wurde.

Die Frage lässt sich wohl so pauschal nicht beantworten....

Da hast du natürlich recht, aber ich finde es trotzdem sehr interessant zu erfahren, wie viele User der Server bei Spiel X oder Spiel Y verkraftet. Wenn man sich die entsprechenden Spiele ansieht, kann man ja durchaus auch Schlüsse fürs eigene Spiel daraus ziehen.

gepostet vor 15 Jahre, 8 Monate von Kampfhoernchen

Die angemeldete Zahl sollte er verkraften, das kannst du ja live beobachten.

Es gibt Fussballstadien für 500 Zuschauer und welche für mehrere zehntausend. So ist es auch bei Servern. Ein Operton-Cluster schafft mehr User als ein altersschwacher V-Server.

gepostet vor 15 Jahre, 8 Monate von Fornax

Stadienvergleich hin oder her: Ich glaube für ähnliche Spiele gibt es ähnliche Grenzen. Wie bei Stadien auch. Ein Stadion der Regionalliga schafft ca. 500 Leute und ein Stadion der ersten Liga mehrere tausend.

gepostet vor 15 Jahre, 8 Monate von mar1us

Hi,

nix für Ungut, aber der Vergleich mit den unterschiedlichen Stadien (Server) etc. ist mir natürlich klar und muss hier wohl nicht weiter ausgeführt werden. In meiner Fragestellung ging es in erster Linie darum zu erfahren, wie eure eigenen Erfahrungen mit Userlasten (samt grober Info zur eurer Serverumgebung) sind und ggf. den einen oder anderen Tipp, wie man an eine Optimierung rangehen könnte bzw. welche Tools/Komponten dafür verwendet werden könnten.

gepostet vor 15 Jahre, 8 Monate von Kallisti

... worauf ich oben geantwortet habe, was du allerdings im Gegensatz zum Stadienvergleich nicht zitiert hast. ;) Ich meinte btw. damit nicht die Serverdimensionen, sondern allem voran das Gamedesign und Featureset. Dort sind die Unterschiede einfach viel zu gewaltig. Den Unterschied der Serverhardware kann man auflisten und errechnen, aber um die Spiel vergleichen zu können, muss man den Source kennen. Klar, alle Ogame Clones kann man über einen Kamm scheren, aber wen interessieren Ogame Clones? Spätestens wenn das eine Strategiespiel nur direkte Angriffe erlaubt, während man im anderen die Routen immerzu wechseln, fremde Flotten einsehen und abfangen kann, ist ein objektiver Vergleich absolut unmöglich.

Was spricht denn gegen angewandte Stresstests? Es gibt imho keinen zuverlässigeren Weg, sofern die Tests sinnvoll reales Verhalten simulieren und die einzelnen Komponenten sinnvoll eingegrenzt werden.

Das geht völlig problemlos mit drei Rechnern im lokalen LAN und lässt sich dann in Sachen Hardware grob hochrechnen.

gepostet vor 15 Jahre, 8 Monate von mar1us

@Kallisti: Sorry, wenn ich mit meinen Antworten einen falschen Eindruck erweckt habe. Fand deinen Einwand (Stresstest) gut und werde mal schauen, wie sich sowas bei uns sinnvoll umsetzen lässt.

gepostet vor 15 Jahre, 8 Monate von Blabbo

Kallisti hat ja Recht, dennoch:

Original von mar1us

 In meiner Fragestellung ging es in erster Linie darum zu erfahren, wie eure eigenen Erfahrungen mit Userlasten (samt grober Info zur eurer Serverumgebung) sind

fände auch ich sowas interessant

gepostet vor 15 Jahre, 8 Monate von Jackflash

wie eure eigenen Erfahrungen mit Userlasten (samt grober Info zur eurer Serverumgebung) sind

Hi,

bei dem alten Server bei Strato:

Itanium 2 900 Mhz, 1024 MB Ram, Suse, Lamp war bei ca. 50 Usern Schluss.

Damals habe ich versucht das Problem durch Optimierung zu lösen. Mit eher mässigem Erfolg.

Seit ca. einem Jahr bin ich bei Hetzner: DS5000. Die Userzahlen sind gleich geblieben und liegen zu Stosszeiten (19.00 Uhr) bei ca. 50 Spielern die gleichzeitig online sind. Durch nochmaliges optimieren der Mysql Abfragen ist der Load nun nie über 5% (CPU). Verschwendung also ;-) Allerdings ist bei mir das rechenintensivste das berechnen der Umsätze, die pro Spieler nur alle 15 Minuten durchgeführt werden.

gepostet vor 15 Jahre, 8 Monate von Kallisti

Original von Blabbo

 In meiner Fragestellung ging es in erster Linie darum zu erfahren, wie eure eigenen Erfahrungen mit Userlasten (samt grober Info zur eurer Serverumgebung) sind

fände auch ich sowas interessant

Na da kann ich mich anschliessen, interessant finde ich so etwas auch. Aber man sollte beruecksichtigen, dass es Konzepte gibt, die linear skalieren und solche die exponentiell mehr Ressourcen schlucken (unvermeidbar, siehe hohe Konzentration von Spielern in einem MMORPG - allein der Traffic wird bei 400+ gigantisch (400*400 = 160.000 => 160kbyte ~= 1mbit je Zeichen/Byte (!!) das an jeden Spieler uebertragen wird, wenn jeder Spieler sekuendlich etwas tut. Und bei mehreren Aktionen, Bewegungsvektoren, Projektilen, Koordinatenupdates, etc. ist allein der Traffic gigantisch in einer Live Umgebung (z.B. WoW Staedteraid), vom Berechnungsaufwand ganz zu schweigen.

Deshalb vielleicht das Konzept und seine Skalierbarkeit kurz mit zusammenfassen. Ich wuerd gern eigene Erfahrungswerte posten, aber hab nicht mehr wirklich ein laufendes Spiel und schon gar keines nach meinen aktuellen Vorstellungen. ;) - Und nie eine merkbare Auslastung wahrgenommen.

gepostet vor 15 Jahre, 8 Monate von MrMaxx

Wollte nur kurz auf JMeter als Tool für Lasttests hinweisen. Habe da mal in der "Nichts ist besser als Java"-Gruppe eine Kurzvorstellung gepostet.

So long...

Maxx

gepostet vor 15 Jahre, 8 Monate von SysWar-Admin

Original von MrMaxx

Wollte nur kurz auf JMeter als Tool für Lasttests hinweisen. Habe da mal in der "Nichts ist besser als Java"-Gruppe eine Kurzvorstellung gepostet.

So long...

Maxx

danke dafür!

gepostet vor 15 Jahre, 8 Monate von mar1us

Ein kleines Update meinerseits. Nachdem wir in letzter Zeit viel bzgl. der Servereinstellungen recherchiert haben, haben wir einfach mal beim Apache die Anzahl der ThreadsPerChild verdoppelt und unsere Performanceprobleme sind seitdem Geschichte. Das war scheinbar unser letzter Flaschenhals (zumindest bei der aktuellen Userzahl)

gepostet vor 15 Jahre, 8 Monate von SysWar-Admin

Original von mar1us

Ein kleines Update meinerseits. Nachdem wir in letzter Zeit viel bzgl. der Servereinstellungen recherchiert haben, haben wir einfach mal beim Apache die Anzahl der ThreadsPerChild verdoppelt und unsere Performanceprobleme sind seitdem Geschichte. Das war scheinbar unser letzter Flaschenhals (zumindest bei der aktuellen Userzahl)

könntest du vielleicht mal in stichpunkten aufzählen, was so die flaschenhälse sind?

bei einem projekt von uns ists die DB bzw Cronjobs (ist schon ein sehr altes Projekt, welches eigentlich eine komplett neue umprogrammierung erfordert).

da hilft natürlich cachen und DB optimieren. da haben wir einiges rausgeholt.

gepostet vor 15 Jahre, 8 Monate von mar1us

Uff...das war ja ein langer Prozess bei uns...aber in erster Linie waren es SQL-Zugriffe, die wir zu Anfangszeiten unseres Spiels sehr blauäugig programmiert haben und die einfach viel zu viel Power gefressen haben...zudem haben wir im Laufe der Zeit viele sinnvolle Indizies angelegt, die anfangs fehlten und ganz wichtig - die Konfiguration von MySQL sehr mühsam an unsere Umgebung angepasst...dabei haben wir sogar den Support von SUN in Anspruch genommen, die haben uns wirklich weitergeholfen...

Auf diese Diskussion antworten