Performance-Boost (1): Darum sind deine Seiten bei Mittwald so schnell
In den vergangenen Jahren haben wir stetig daran gearbeitet, die Performance unserer Hosting-Umgebung weiter zu optimieren – das rasante Endergebnis erlebst du beim Aufruf deines bei uns gehosteten Projekts. In diesem Artikel möchten wir dir einen Blick auf verschiedene Etappen unserer Reise geben und Dir zeigen, welche Faktoren dein Hosting besonders performant machen.
Was ist Performance?
Auf die Frage „Was ist Performance?“ gibt es keine allgemeingültige Antwort. Wenn man unsere Kundenservice-Experten fragt, anhand welcher Kennwerte unsere Kunden Performance festmachen, sind die häufigsten Antworten: Time To First Byte (TTFB) und Total Time im Browser sowie die Daten von Google PageSpeed Insights.
Um eine Verbesserung in feststellen zu können, muss man in der Lage sein, eine Veränderung zu bemerken. In unserem Fall heißt das, dass wir zuverlässig messbare Größen brauchen, welche die „Performance“ eines Systems beschreiben. TTFB und Total Time sind daher gute Kenngrößen für uns, die wir mit überschaubarem Aufwand und wiederholgenau ermitteln können.
In dieser Wiederholgenauigkeit liegt übrigens der Knackpunkt. Sie ist der Grund, aus dem wir bei unserer Optimierung nicht auf externe Tools wie Google PageSpeed setzen: Wenn wir eine Änderung in den Ergebnissen feststellen, können wir uns nicht sicher sein, ob die Änderung durch das gemessene oder das messende System hervorgerufen wurde. Darum setzen wir nur auf Werte aus Quellen, die wir komplett einsehen können.
Wie messen wir Performance?
Wir haben lange nach einem geeigneten Tool gesucht, die Schwierigkeit: Keins misst alles. Programme wie Apache jMeter messen lediglich die Antwortzeit des ersten Requests, wodurch wichtige Aspekte wie I/O oder Netzwerk-Latenzen vernachlässigt werden. Ein Service wie loader.io hat diese Einschränkung nicht, allerdings ist das Testsystem nicht zwangsweise deterministisch, was zum eben beschriebenen Problem führt. Außerdem ist nicht klar, welche Netzwerkkomponenten außerhalb der Mittwald Infrastruktur Einfluss auf die Werte nehmen.
Um die Messungen effizient durchführen zu können und hinreichend große Stichproben mit den richtigen Kennzahlen zu erhalten, haben wir uns dazu entschieden, etwas Eigenes zu entwickeln. Das Ergebnis: Ein containerisiertes Tool, das auf Basis von konfigurierbaren Testfällen beliebige Websites mithilfe eines Headless Chrome Browsers anfragt und die Daten der Entwicklerausgabe loggt. Dabei misst es in beliebiger Häufigkeit die TTFB und Total Time – und das unter Berücksichtigung aller Renderlatenzen sowie nachzuladenden Elemente. Die Anfragen können sequentiell an den Server gesendet werden, um die Performance eines einzelnen Seitenaufrufs zu testen oder auch massiv parallelisiert, um Aussagen über die Gesamtsystemleistung machen zu können.
Wie schnell ist ein „performantes“ System?
Wenn etwas „schnell“ ist, muss es im Vergleich dazu auch etwas „Normales“ geben, auf Basis dessen man Optimierungen vornehmen kann. Unsere Definition von „normal“ ist ein potenter Server aktuellen Baujahrs, auf dem mit Hilfe eines LAMP Stacks einige Testinstallationen betrieben werden. So weit, so Best Practice.
Schnell, oder zumindest schneller, wäre dann alles, was über dieses „Normale“ hinausgeht. Richtig interessant wird es für uns aber erst, wenn es für euch als Kunden spürbar schnell ist – leider ein emotionaler Aspekt, den wir mit unserem Setup nicht messen können und außerdem sehr individuell. Ein Beispiel: Der User eines performanten Projekts mit einer Ladezeit von 50 ms wird eine Steigerung der Performance um 20 % (= Verbesserung der Ladezeit auf 40 ms) nicht wahrnehmen.
Bei einem sehr trägen System mit einer Ladezeit von 4 Sekunden macht dieselbe Anpassung aber eine Änderung der Ladezeit um 0,8 Sekunden aus – ein Wert, der auch für den einfachen Anwender durchaus bemerkbar ist.
Nun ist unsere Systemarchitektur ein wenig komplexer als ein simpler LAMP Stack. Diese Herangehensweise ermöglicht es uns zunächst, Overheads, die durch die erweiterte Systemarchitektur entstehen, zu messen und zu beseitigen.
Außerdem können wir so die Auswirkungen einzelner Systemparameter auf die Performance betrachten und ganz gezielt feststellen, was für die Workloads unserer Kunden das beste Setup ist. Das zieht sich über die Hardwareauswahl (hohe Single Thread Performance für besonders schnelle Auslieferung eines einzelnen Seitenaufrufs) über die Systemkonfiguration (Power State Governors der Systeme) bis hin zu Konfigurationsparametern (wie etwa der optimalen Größe des PHP APCu Caches oder der effektivsten Anzahl FPM Worker für bestimmte Hostingtarife). In sehr vielen Einzelversuchen finden wir dabei das perfekte Zusammenspiel zwischen verwendeter Hardware und Systemkonfiguration.
Welche Rolle spielt die Netzwerkinfrastruktur in der Performance deiner Webseite?
Schwankungen in der Antwortzeit eines Servers können entweder im System selbst begründet liegen oder auf dem Weg zum oder vom Server zum Aufrufer hinzukommen. Um Netzwerk-Latenzen auszuschließen, binden wir unser testendes System bei der reinen Hostsystemoptimierung Peer-to-Peer ans zu testende System an. Erhalten wir hier konstante Werte die unseren Erwartungen entsprechen geht es einen Schritt weiter: an die Außengrenzen des Mittwald Netzwerks an unseren Peering-Endpunkten, z. B. in Frankfurt am Main. Dort haben wir ebenfalls Systeme positioniert, mit Hilfe derer wir die Performance unseres kompletten Stacks messen können.
Besonders bei Projekten, bei denen ein Seitenaufruf eine Vielzahl von HTTP Requests auslöst, machen sich außerdem Latenzen bemerkbar, die durch verwendete Netzwerkkomponenten eingebracht werden. Und auch auf dieser Strecke finden sich Komponenten wie z. B. unsere Load Balancer, bei denen man durch eine Optimierung der Konfiguration für unsere Workloads noch einige Millisekunden herausholen kann. Dabei liegt im Netzwerk deutlich mehr Optimierungspotential, als man auf den ersten Blick vermuten könnte. Details dazu haben meine Kollegen aus dem Netzwerk Team in einem separaten Blog Post beschrieben.
Fazit
Durch die Summe aus Monitoring und Optimierung halten wir die Performance jedes einzelnen Seitenaufrufs auf sehr hohem Niveau. Neben der Hosting-Umgebung selbst gibt es aber natürlich einige Dinge, auf die wir keinen Einfluss haben, die dir aber zu weiteren Performance-Vorteilen verhelfen können. Lies in den nächsten Teilen, wie die Tools Lighthouse und PageSpeed Insights deine Websites noch leistungsstärker machen können.
Tipp!
Hoste deine CMS- und Shop-Projekte auf dem Agentur-Server und profitiere von maximaler Performance - ab dem kleinsten Tarif. Bester Service rund um die Uhr, automatische Backups und easy handling deiner Projekte mit nur einem Login sind inklu.