My-Hammer, das Fernsehen und die Serverlast: Teil 1

Dies ist Teil 1 der Artikelserie zum Thema Webseiten-Skalierung. Die anderen Teile:

Teil 1: Allgemeine Überlegungen
Teil 2: Datenbankoptimierung
Teil 2.1: Praxistipps Datenbank
Teil 3: Caching
Teil 4: Zukünftige Optimierungen (folgt)

Vergangenen Donnerstag zeigte das ProSieben Magazin Galileo einen ca. 10-minütigen Beitrag über My-Hammer (kurze Infos zur Sendung hier). Vom Ansatz her ging es um “Branchenbuch vs. My-Hammer”, aber für die Betrachtung hier ist das gar nicht so sehr von Interesse - es ist noch nichtmal von Interesse, ob so ein Beitrag positiv oder negativ für uns ist (in dem Fall war’s wie fast immer positiv) - sobald das Magazin, in dem über uns berichtet wird, genug Reichweite hat, schießen die Zugriffe in die Höhe. Die wichtigste Erkenntnis, die wir immer wieder machen: zumindest bei den Privaten scheinen die Zuschauer sprichwörtlich mit dem Laptop auf den Knien vorm Fernseher zu sitzen. Die Zugriffe kommen extrem schnell und gebündelt (beim Galileo-Beitrag war aber interessant, dass die Zugriffe wieder auf einen Schlag kamen, aber erst in dem Moment, in dem der Beitrag vorbei war).

Genau dieses plötzliche Auftreten so vieler Zugriffe ist natürlich die Herausforderung - dieselbe Anzahl User auf nur 15 Minuten verteilt wären kein Problem, aber TV sorgt dafür, dass das meiste innerhalb der ersten 5 Minuten passiert. Und es ist wirtschaftlich natürlich ziemlich unvernünftig, die für diese 5 Minuten benötigte Rechenpower anzuschaffen, nur damit sie die anderen 525.595 Minuten im Jahr vor sich hindümpelt.

Trotzdem kann man eine Webseite auch auf solche Extremsituationen vorbereiten - My-Hammer hat am Donnerstag perfekt standgehalten, lediglich eine leichte Verzögerung in den Ladezeiten war während der kritischen Phase spürbar.

Um kurz die Dimensionen klarzumachen, erstmal eine Grafik, welche den ein- und ausgehenden IP Traffic für unser Netzwerk anzeigt. Man sieht sehr deutlich den Sprung auf das gut 2,5-fache des normalen Werts. Der Faktor selbst klingt vielleicht erstmal nicht so dramatisch, aber wie erwähnt geht es nicht um die Masse an sich, sondern das extrem gebündelte Auftreten dieser Masse an Zugriffen:

IP-Traffic My-Hammer

Ich behaupte mal, man erkennt recht gut, wann die Sendung lief…

Also, wie kann man die Serversysteme auf so etwas vorbereiten? Klar: mehr Server kaufen. Das ist durchaus ein Aspekt, aber nicht das Allheilmittel. Vor allen Dingen kann das sehr ineffektiv und unwirtschaftlich sein. Angenommen, man hat Server A mit einer gewissen Leistungsfähigkeit. Nun kann man sich Server B mit doppelt so schnellem Prozessor, doppeltem Arbeitsspeicher und doppelt so schnellen Festplatten kaufen. Dann hat man schon Unmengen von Geld ausgegeben, und hat gerade mal eine Steigerung der Leistungsfähigkeit von 100% (mal davon abgesehen, dass die Rechnung “doppelt so schnelle Hardware, doppelt so viel Leistung” in der Praxis auch nicht wirklich hinhaut). Dagegen kann ein einziger geschickt gesetzter Index in der Datenbank manchmal 1000% bessere Performance bringen, ohne dass man etwas an der Hardware tut.

Wenn man den Anschaffungspreis neuer Hardware mal auf den Stundenlohn eines Entwicklers umrechnet, wird man schnell zu dem Schluss kommen, dass es sich auch finanziell durchaus rechnen kann, diesen einige Tage lang auf die Datenbank anzusetzen um zu schauen, ob nicht doch irgendwo ein wichtiger Index vergessen wurde oder einige Tabellenstrukturen besser ganz anders aufgebaut sein sollten.

Das sind nur ein paar grundsätzliche Überlegungen. Spürbaren Erfolg wird man nur haben, wenn man ein ganzes Bündel an Massnahmen ergreift und vor allem immer das Gesamtsystem vom Code über die Datenbank bis hin zu den Servern und dem Netzwerk im Überblick hat. Die vielleicht wichtigste Faustregel, wenn man über Performanceoptimierung von Webseiten spricht, scheint mir daher zu sein: Coder und Admins an einen Tisch! Es hilft nichts, wenn die Entwickler meinen, die Geschwindigkeit des Systems sei doch schliesslich Sache des Admins. Umgekehrt ist es extrem hilfreich, wenn die Programmierer auch einen gewissen Sysadmin-Background haben, und die Admins umgekehrt auch Programmiererfahrung haben; was bei uns glücklicherweise sogar sehr ausgeprägt der Fall ist.

Die weiteren Teile befassen sich mit den konkreten Massnahmen, die man ergreifen kann um sich auf einen TV Beitrag vorzubereiten.

Using apt on Etch connecting to an apt-proxy on Sarge causes trouble with .diff files

openlogo-nd-50.pngSay you have an installation of apt-proxy running on a Debian Sarge machine to serve files for apt on your other machines, then you will receive errors like this when issuing an apt-get update on an Etch machine: Error reading from server. Remote end closed connection.The reason is that Etch tries to download a file called Packages.diff which Sarge’s apt-proxy doesn’t know how to serve.

apt-proxy therefore log notes the following:

2007/02/09 10:10 CET [Channel,129,213.203.200.122] [debug] Request: GET /debian/dists/etch/main/binary-amd64/Packages.diff/Index
2007/02/09 10:10 CET [Channel,129,213.203.200.122] [debug] abort - unknown extension

Adding the following line to /etc/apt/apt.conf on your Etch machines will tell them not to download those files:

Acquire::PDiffs “false”;

ARSC Really Simple Chat

As my server crashed last week, I decided to not set up a homepage for my Open Source webchat project ARSC again.
It simply isn’t worth the hassle, because I didn’t do any work on ARSC for over 1 year now.

The SourceForge project page of ARSC is of course still active, and I don’t see any sense in deactivating it, because the latest stable release still works very well, supporting PHP4 and PHP5, MySQL 4 and 5, register_globals = Off and PHP’s safe_mode.

VHCS rocks

logo_right.gifVHCS, the Virtual Hosting Control System, seems to be a full-featured and stable OSS alternative to Confixx, Plesk and Co. I don‘t use it myself (yet), but did set up an installation for a friend who needed a simple to use yet complete solution to administrate his eMail and Websites.

Installation on a freshly-installed Debian Sarge system went absolutely smooth - a new release with full support for Etch is on the way.

The feature list is quite impressive, you can completely manage everything commonly needed in a LAMP environment, even a webmail client is included. As far as I can see, no „dirty hacks“ are used, besides VHCS itself you only need common and official Debian packages.

Not that there aren‘t drawbacks: With the basic installation, everything runs unencrypted - no SCP, only FTP, and Postfix, Courier Imap, Apache and MySQL all running in non-SSL mode. I did not yet find the time to have a closer look at the configuration, looks like those can be enabled.

VHCS is actually designed to provide a complete hosting solution, including the management of resellers which in turn can completely manage their users, and those user can completely manage their Web/Mail/Database environment. But it already makes sense if you have only one user and this user is you (or, as in my case, a friend of yours who knows a bit about LAMP but not wouldn‘t be able to set up everything from scratch himself).

Decorators in PHP5

Until now I thought that decorating an object variable or method isn’t possible with PHP5, because __set, __get and __call, if you use them directly, are only working if you set or get variables (or call methods) that have not yet been defined.

But Ivo Jansch describes a nifty workaround by creating a forward class that overrides the built-in __set, __get and __call methods. This forward class can then be used to extend your decorator classes, allowing you to decorate variables and methods of your classes even if they have already been defined. Read the complete post here: Building proxies, decorators and delegates in PHP5.

« Previous PageNext Page »
Photograph of Manuel Kiessling
My XING profile
My LinkedIn profile