Browsergames – Welche Last verursachen diese?

23. Juni 2010 - Geschrieben von Martin - 4 Kommentare

Browsergames – jeder kennt eines, viele Spielen eines und so mancher hat selbst schon einmal eines Entwickelt. Doch welcher Aufwand ist es ein solches zu Entwickeln und wie Betreibe ich eines?

Welche Technik und Infrastruktur steckt hinter Browsergames?
Ein Browsergame ist im Grunde eine normale Webseite welche in PHP, Phyton, Perl oder sonst irgendeiner Programmiersprache Entwickelt sein könnte. Oft kommt dazu noch ein wenig JavaScript um es für den Nutzer ansprechender zu Gestalten.

Auf Serverseite sieht es auch meist gleich aus, es werkelt mindestens ein Linux Server mit der Verwenden Script Sprache und einer Datenbank, sowie einem Mailserver. Wird das Browsergame jedoch größer findet hier meist eine Trennung zwischen Web-, File-, Database- und Mail Server statt, da diese dann entsprechend optimiert und die Last somit besser verteilt werden kann.

Im Grunde ist das ganze bisher kein Hexenwerk, geht man aber ins Detail trifft einen der Schlag. Eine normale Webseite wird pro Besuch vielleicht 5 bis 10 mal aufgerufen, hierbei wird die Seite mit Menü und Konsorten aus einer Datenbank gelesen und falls das System schlau ist in einen Cache geschrieben. Bei einem Browsergame hingegen kann nichts gecached werden, da alles Dynamisch für den Spieler aufbereitet wird.

In Zahlen, eine Webseite hat pro Besuch 5 bis 10 Requests. Ein Browsergame kann auch mit diesen 5 bis 10 Requests auskommen, doch dazu kommen noch die AJAX Abfragen, welche nahezu sekündlich ausgeführt werden. Nehmen wir einmal an es wird alle 5 Sekunden eine AJAX Abfrage ausgeführt, dann sind wir schon bei ganzen 12 Weiteren Abfragen pro Minute (Man beachte im Normalfall sind es noch einige mehr!) das würde bei einer Durchschnitts Onlinezeit von 15 Minuten ganze 180 Requests ausmachen!

Wie optimiere ich meinen Server?
Gehen wir mal davon aus, das das Spiel perfekt auf die vielen Requests ausgelegt ist. Was kann man dann auf der Server Seite machen?

Einen kleinen schnellen Webserver verwenden, ich empfehle an dieser Stelle Lighttpd, welcher aus meiner Sicht sich für ein solche Unterfangen wesentlich besser eignet als Apache(2). In der Konfigurationsdatei können unter anderem auch diverse Module wie „webdav“, „rewrite“ und falls es nicht benötigt wird das Modul „accesslog“ deaktiviert werden. Je nach Bedürfnis können natürlich Module ein- bzw. abgeschaltet werden, allerdings sollte die Liste der aktiven immer so kurz wie möglich gehalten werden.

Seitens der Scriptsprache. Da hier keine explizit festgelegt wurde, an dieser Stelle nur einige allgemeine Hinweise. In den jeweiligen Konfigurationsdateien gibt es oft eine Reihe an Parametern, mit denen man Funktionen abschalten kann, welche nicht unbedingt benötigt werden, beispielsweise, das im Header gesendet wird, das diese Seite mit PHP Version 5.3.x erstellt wurde. Tipps gibt es in einschlägigen Webseiten, Foren und Blogs.

So wenig Dienste als möglich! Das sagt eigentlich schon alles, im Hintergrund sollte keine Sinnlosen Dienste wir FTP laufen, wenn diese gar nicht benötigt werden. Sollte es der Fall sein, das man einen dieser Dienste benötigt, einfach schnell via SSH einloggen und nach nicht einmal 10 Sekunden läuft der Dienst.

Gute Hardware ist die halbe Miete. Nicht nur Zuhause beim Entwickeln, auch Online erspart gute Hardware viele Schlaflose Nächte, in denen der Server überlastet ist oder sich aufgehängt hat. Ich empfehle so viel RAM wie möglich und einen Schnellen CPU.

Fazit
Browsergames sind wahre Ressourcenfresser, doch mit der richtigen Hardware, den Perfekten Einstellungen und natürlich Sauber und Performant geschriebenen Quellcode steht dem Spaß nichts mehr im Wege.

4 Antworten zu “Browsergames – Welche Last verursachen diese?”

  1. sebi sagt:

    > Ein Browsergame ist im Grunde eine normale Webseite welche in PHP, Phyton, Pearl oder sonst irgendeiner Programmiersprache Entwickelt sein könnte.
    PERL!! C(++) und Java (Servlets) nicht zu vergessen.
    Wieso legst du im Artikel so viel Wert auf den Mail-Server? Schon mal an den Webserver gedacht? :P
    > […] Trennung zwischen File, Database und Mail Server […]
    Fileserver? Nennt sich Webserver…
    Es seien auch noch nginx und cherokee als schnelle Webserver anzuführen.
    Bei der Konfiguration ist noch zu erwähnen, dass hier eigentlich alles deaktiviert werden kann, denn zB rewrite bremst nur und die URL interessiert den User eh nicht.

    Ein wenig ausführlicher wärs schon gegangen ;)

  2. Martin sagt:

    > Wieso legst du im Artikel so viel Wert auf den Mail-Server?
    Ich habe ihn nur am Rande erwähnt ;) Und das, weil ein Mail Server (bei größeren Seiten und Diensten) nichts auf dem Web oder DB Server verloren hat.

    > Fileserver? Nennt sich Webserver…
    Oh da hab ich wohl den Webserver nicht aufgezählt (Danke für den Hinweis), aber einen Fileserver (NAS) brauchst du ebenso, oder legst du deine Backups auf einen Webserver?

    > Ein wenig ausführlicher wärs schon gegangen ;)
    Ich wollte auch nur Denkanstöße vermitteln, wie man Apache, MySQL, etc. konfiguriert sollten angehende Browsergame Admins schon selbst wissen.

  3. sebi sagt:

    > > Fileserver? Nennt sich Webserver…
    > Oh da hab ich wohl den Webserver nicht aufgezählt (Danke für den Hinweis), aber
    > einen Fileserver (NAS) brauchst du ebenso, oder legst du deine Backups auf einen
    > Webserver?
    Backupserver nenn ich das :)

  4. Anonymous sagt:

    hey, nice weblog and good publish

Schreibe einen Kommentar