Nicht nur um dem Namen "sport1.at - der schnellste Sport im Netz" gerecht zu werden waren die Anforderungen an die Performance außergewöhnlich:

  • bis zu 1.000.000 Pageimpressions (PIs) pro Tag
  • Peaks von bis zu 250 PIs/Sekunde bzw. 15mbit/s abends und bei Life-Übertragungen von Sport-Events.
  • Backendspitzen mit bis zu 30 parallel einpflegenden Redakteuren.
  • Laufender Export von neuen Artikeln für die alternativen Kanäle: Teletext, SMS-Services, XML-Feeds, RSS

Der Einsatz eines PHP-Optimizers, die Vermeidung von nicht cachebaren Extensions (user_int), und die optimale Konfiguration des TYPO3-Caching Verhaltens waren selbstverständlich jedoch nicht ausreichend.


Bei "normalen" Websites sind bis zu 90% der Inhalte relativ statisch und erlauben ein Caching von bist zu 24 Stunden und mehr. Nicht so, jedoch, bei einer Site die zu mehr als 95% stunden- bzw. minuten-aktuelle Information anbietet. Dafür ist eine Cache-Period von maximal 60 Sekunden zulässig.

            [statisches Caching - keine Option]

Statische File-Caches, wie vom TYPO3-Core und von diversen Caching-Extensions angeboten, mussten als Option ausgeschlossen werden, da die Aktualisierung von bis zu 30.000 Seiten (100.000 Contentelementen) zu zeitaufwendig gewesen wäre.

DYNAMISCHES CACHING: CACHE-HEADERS, REVERSE PROXY, SPIDERS

Die Stories auf der Startseite werden im Minutentakt aktualisiert

TYPO3 bietet seit Version 3.8 die Möglichkeit über Cache-Header einen reverse Proxy anzusteuern. Dabei werden alle Anfragen vom Proxy entgegengenommen und sofern keine neue Version einer Seite in TYPO3 vorliegt, die vom Proxy vorgehaltene Version an den Client geliefert. Dieser Mechanismus wurde um zusätzliche Cache-Header erweitert um zwischen der TYPO3-Cache-Dauer und der Client- bzw. Squid-Cache-Dauer unterscheiden zu können (Cache-Control: max-age & Expires). Damit kann die Redaktion fein granuliert die Aktualität aller Inhalte auf Seiten- oder Ast-Ebene bestimmen.

Der große Vorteil dieses Setups ergibt sich aus der automatischen Dynamik der Applikationsnutzung. Nicht, oder selten besuchte Inhalte werden fast "ignoriert", viel besuchte und daher wirklich relevante Seiten hingegen liegen permanent im Cache des Reverse-Proxy (und im TYPO3-Cache) und können daher in wenigen Millisekunden an den Client geliefert werden.

            [Verwandte News tricksen TYPO3-Caching aus]

Ein klassisches Caching-Problem stellten die bei jedem Bericht angezeigten "verwandte News" dar. Der Bericht selber ändert sich nach Erstellung nur noch selten, jedoch sollen neue, über die Rubrizierung (Themen) gesteuerte "verwandte" News aktuell zu jeder Meldung angezeigt werden. Diese Änderungen "sieht" das TYPO3-Caching jedoch nicht und liefert daher eine alte Version der Seite aus. Die Löschung des TYPO3-Cache bei Hinzufügen neuer News war bei sport1 aufgrund der hohen Seitenzahl mit verwandten News nicht machbar.

            [Flinke Spinnen sorgen für frische Inhalte]

Daher wurden zusätzlich spezielle "Spider" entwickelt, welche laufend die Seiten-Caches von TYPO3 und Squid aktualisieren. Diese Spider durchlaufen dabei in konfigurierbaren Intervallen unterschiedlich wichtige Seiten bzw. Seitenäste und garantieren damit die geforderte Aktualität aller Inhalte.

KEIN LAUNCH OHNE REALISTISCHE LASTTESTS…

... und kein Tuning ohne Langzeit-Monitoring. Neben ausreichend guter Hardware und einer performanten Applikation sind erfolgreiche realistische Performancetests der Garant dafür um "nach dem Launch" keine Enttäuschung zu erleben. Tools wie Apache-Benchmark können zwar viel Load auf eine Hand voller Pages erzeugen, machen jedoch keine Aussage über den real zu erwartenden "Ansturm".

            [Lasttests, Monitoring & Tuning schließen Überaschungen aus]

Grundvoraussetzungen für relaitätsnahe Performancetests und Optimierungen sind:

  • UseCases (Testcases) für User und Redaktion,
  • Langzeit-Performance-Monitoring und
  • ein etablierter Test-Zyklus: Tests & Monitoring > Analyse > Tuning > Tests & Monitoring

Dafür wurden unterschiedliche Anwendungsszenarien für Besucher - "Wie wandern die User durch die Site", und für die Redaktion "wie nutzen die Redakteure das CMS" erstellt. Aus den Weblogfiles der alten Applikation konnten 10 unterschiedliche Besucher-Usecases und 5 unterschiedliche Redaktions-Vorgänge definiert werden.

Diese 15 Testcases wurden mit den Tools jMeter (Frontend) und Selenium (Backend) auf die erwartete Anzahl gleichzeitiger Usersessions (concurrent Users) "multipliziert", sodass das System unter realitätsnaher Belastung getestet und die Performance mit Ganglia gemessen  werden konnte.

Daraus ergaben sich folgende Maßnahmen zur Performance-Steigerung: Einsatz von eAccelerator statt Zend Optimizer, Tausch von Apache1 gegen Apache2, Squid 2.6 statt 2.4, MySQL-Tuning (Konfiguration & Indizes), Optimierung der Queries von Extensions und Typoscript, und diverse Konfigurations-Anpassungen der Caching-Parameter.

            [Keine Angst vor dem Erfolg der Site]

Mit diesen Änderungen konnte die Performance soweit gesteigert werden, dass das System nun, voll dnyamisch bis zu 400 Seiten/Sekunde ausliefern kann. Damit ist die Sollvorgabe übererfüllt und die Site hat "hinreichend" Luft um weiter ausgebaut zu werden.

Die verwendeten Scripts und Tools wie jMeter, Selenium, und ganglia (Montoring) bewiesen ihr Nützlichkeit nicht nur bei den Lasttests, sondern erlauben nun auch im Produktivbetrieb die Langzeitbeobachtung der Performance der einzelnen Komponenten (ganglia).

Ganglia bietet detaillierteste Performance-Information von der letzten Stunde bis zu 12 Monaten

RESÜMEE

Die Performancesorgen für Live-Sport-Events (250 PIs/Sekunde) konnten durch realitätsnahe Tests schon vor dem Launch beseitigt werden. Zweifel bzgl. der Backend-Performance (30 zeitgleiche Redakteure) wurden zusätzlich durch die Selenium-Tests aus dem Weg geräumt.

 

Armin Rudelstorfer, Projektmanager sport1.at:

"Exzellente Planung, realitätsnahe Tests, und das hervorragende Know-How von plan2net, im Bereich Performance-Analyse und -Tuning, befreien uns von den schlechten Performance-Erfahrungen mit anderen Content-Management-Systemen und erlauben uns die Konzentration auf unser Kerngeschäft: den schnellsten Sport im Netz zu publizieren."