Web Server Optimisation
http://www.plattenladen.tv/deDer Kunde
music4brands ist ein Digital Service Provider für Online-Downloads mit namhaften Partnern und Kunden (EMI, SonyBMG, Universal, BMW, TV Total / Pro 7, Networld, OE3, uvm).
Ziel
Unsere Aufgabe bestand darin, die Kapazität der Server-Infrastruktur des Kunden (bestehend aus vielen Web- und Datenbankservern), ohne Zukauf weiterer Hardware um das zehnfache zu optimieren. Außerdem sollte die Infrastruktur skalierbar gemacht werden.
Ausgangslage
- Der Kunde betreibt ein System für die Bereitstellung und den Betrieb von Online Musik-Stores, darunter auch welche die zeitweise großen Besucheranstürmen ausgesetzt sind, die durch TV-Werbung ausgelöst werden (wie z.B. dem Plattenladen von TV Total, Pro7). Die Plattform des Kunden konnte diesen wichtigen Lastspitzen nicht standhalten und brach zusammen. Die Hinzunahme von mehr Servern alleine brachte keine Resultate..
Umsetzung
- Als erstes haben wir die Verteilung der Anfragen von einem DNS-Round-Robin basierten System auf ein TCP basiertes umgestellt. Dafür wurden als Router Server mit FreeBSD, dem Paketfilter pf, und eigener Programme zur Steuerung und Gewichtung eingesetzt. Damit konnte die Belastbarkeit (in Concurrent User) um 300% ca. gesteigert werden.
- Als nächstes haben wir die PHP/MySQL basierte Anwendung in einer Testumgebung unter die Lupe genommen, und die Schnittstellen zur Datenbank komplett überarbeitet.
- Dazu wurden noch gezielte Caching-Mechanismen eingebaut, um die Datenbankserver möglichst zu entlasten. Damit konnten wir auf dem Testsystem einen Performancezuwachs von ca. 400% und eine erhöhte Belastbarkeit von ca. 800% erreichen.
- Nachdem das verbesserte Framework auf die produktiven Webserver übertragen war, konnte die Verbesserung, die im Testsystem festgestellt worden war, vorerst nicht linear auf das Gesamtsystem übertragen werden. Die eingesetzte Linux-Distribution konnte nicht mit der Skalierbarkeit des Testsystems mithalten. Wir stellten die Infrastruktur aller Server auf einen gemeinsamen Nenner um (basierend auf FreeBSD 6).
- Zusätzlich verteilten wir die Aufgaben der Server weiter um, durch den Einsatz von mehr MySQL Datenbank-Replikas, und implementierten ein Load Balancer für Datenbankverbindungen.
Ergebnis
Die Leistung des Systems lässt sich sehen. Die Anforderungen des Kunden und seiner Auftraggeber wurden übertroffen. Die Leistung des Systems entspricht nach unserer Überarbeitung das ca. der 20-fachen Leistung von der Ausgangssituation. Die Infrastruktur ist damit in der Lage, Lastspitzen, die durch TV-Werbung erzeugt werden, gerecht zu werden, kann mit neuer Hardware weiter verbessert werden und ist laufend monitoriert.