Permalink

1

Drupal-Optimierung für eine der grössten Websites der Schweiz

LikeMag.com Website / Oktober 2014

Seit Anfang des Jahres betreuen wir LikeMag – eine der grössten Drupal-Websites der Schweiz. Parallel tausende User online und mehr als 4.5 Millionen Visits pro Monat. Das war eine Herausforderung für mich und mein prodevcon-Team. Was muss man bei dieser Anzahl User beachten und welche Optimierungen sind notwendig?


Die Ausgangslage
Die Website wurde vorher von einer anderen Schweizer Webagentur realisiert und betreut. Es wurde ein Partner gesucht, der zuverlässig, schnell, flexibel und kostengünstig arbeitet. Die Lösung? Nearshoring in Belgrad bei der prodevcon. Da ich früher schon bei den Scout24-Portalen mitgearbeitet hatten, war/ist bei uns auch Know-How in diesem Bereich vorhanden.

Das Problem
Nach vielen offenen Änderungswünschen war die Website-Performance das grösste Problem. Die Ladezeiten waren teilweise über 14 Sekunden pro Seite. So macht Herumsurfen kein Spass mehr!

Schritt 1, Optimierung – CloudFlare
Bevor wir uns über die neue Server Infrastruktur Gedanken machten, aktivierten wir als erstes den Dienst CloudFlare („Pro“ Lizenz). Damit haben wir die Ladezeit mit quasi „einem Klick“ reduziert, von 14 Sekunden auf ca. 7 Sekunden (siehe Video unten).

CloudFlare optimiert ohne Anpassung vom Sourcecode die Ladezeiten der Website. HTML/CSS/JS Minifying und Bildkompression sind ein paar Stichwörter dazu. Im weiteren schützt der Dienst vor DDoS-Attacken, ist ein CDN, ein Offline-Cache und hat noch viele weitere Funktionen. Jedoch hat CloudFlare nicht nur goldige Seiten. Wenn z.B. CloudFlare ausfällt ist die Website nicht mehr erreichbar. Ein weiteres Problem kann sein, dass der Traffic zuerst ins Ausland fliesst und dann wieder zurück – je nach User & Serverstandort. Nicht immer optimal.

Schritt 2, Optimierung – Amazon EC2
Die Website lief noch auf einem Server bei der Schweizer Webagentur, der mit anderen Kunden geteilt wurde. Das wurde immer mehr zu einem Problem, denn Drupal ist sehr „gefrässig“ was Server-Ressourcen angeht. Da eine schnelle Lösung her musste, haben wir uns für die Virtualisierung der Applikation auf Amazon EC2 entschieden.

Schritt 3, Analyse – Hardware
Auf dem neuen virtuellen Amazon-Server hatten wir nun eine bequeme Möglichkeit, die benötigte Performance im Live-Betrieb zu analysieren und an der Konfiguration der Server zu „schrauben“, ohne dass die User etwas merkten. Wie viele CPU’s, wie viele Disk Zugriffe, wie viel Memory ist ideal, etc.? Alles per Klick veränderbar.

Schritt 4, Analyse & Optimierung – Software
Parallel dazu haben wir das Server-Setup (Apache, MySQL, Varnish Cache, etc.) und Drupal & Co. analysiert und festgestellt, da lässt sich noch einiges optimieren. Wir haben folgendes gemacht:

  • Drupal Update (Drupal aktualisiert, alle Sicherheitspatchs einspielen, etc.)
  • Module deaktivieren/austauschen (Nicht benötigte Module deaktivieren, langsame Module mit ähnlichen Modulen ersetzen, Module aktualisiert)
  • Apache ersetzt durch Nginx (Apache-Config & .htaccess’s kann nicht mehr verwendet werden, wir verwendeten als Basis die Konfiguration von Perusio)
  • MySQL ersetzt durch MariaDB (DB’s sind kompatibel, es braucht nur eine andere Konfiguration, Performance Gewinn von ca. 20%)
  • Varnish Cache deaktiviert (dafür Drupal Boost und Drupal Cache aktiviert, CloudFlare liefert schon mit Varnish an den User aus)
  • MemcachedAPC Cache installiert & konfiguriert
  • Anpassung der Applikation & Konfiguration (damit die Website Memcached und die weiteren Caches sauber verwendet)

Memcached, APC-Cache und Drupal-Caching ist eine Wissenschaft für sich, darüber gibt es einmal einen separaten Artikel. Trage Dich dafür in den Update-Newsletter ein!

Schritt 5, Optimierung – Server
Der virtuelle Server lief perfekt. Das Problem? Der viele Traffic, die vielen Disk-Zugriffe (trotz CloudFlare, Caching & Co.) und ein paar CPU’s brauchte es auch noch. Das wurde richtig teuer pro Monat. Mit dem Kunden zusammen haben wir uns für zwei Dedicated Server entschieden (E5-2620 Hexa-Core, 128 GB RAM, 3TB HDD-Raid und 300 GB SSD). Die Server laufen auf einem modifizierten/gehärtetem Ubuntu, werden u.a. mit M/Monit (extern laufend auf einem EC2-Server) und WebSitePulse überwacht. Der „alte“ EC2-Server verwenden wir als zusätzlichen Ausfallsicherheit (anderer Anbieter/Ort) und natürlich gibt es eine Backupstrategie ;)

Das Resultat
Mehr Geschwindigkeit, höhere Ausfallsicherheit und viel Reserve für die nächsten paar Millionen User. Das Video zeigt unsere Optimierungen im Browser (Links aktuell, Rechts vorher mit CloudFlare).

Nicht 100% vergleichbar, da nicht die selben Inhalte online waren und sich das Layout leicht verändert hat.

Hier ist visuell sehr schön zu sehen wie die Änderungen gewirkt haben. Spannenderweise liefert Google Analytics ganz andere Werte und behauptet die Website Ladezeiten hätten teilweise sogar zugenommen, was definitiv nicht stimmt. Google Webmaster wiederum bestätigt unsere Messungen.

Für das Performance-Testing haben wir nebst Firebug & Co. Webpagetest verwendet und Load-Testings haben wir mit Blitz durchgeführt.

Fazit & To-Do’s
Die Performance der Seite hat sich massiv verbessert, der Datentraffic wurde/wird durch CloudFlare reduziert (im letzten Monat um 6.2 TB) und es wurden mehrere massive DDoS-Attacken erfolgreich abgewehrt.

Das grösste und immer noch aktuelle Problem sind externe Dienste, welche integriert und zu langsam sind. Facebook-Like Boxen & Co., Disqus und vor allem die verschiedensten Werbe-Netzwerke verzögern den Aufbau der Seite. Auch sind einige der Drupal Module noch nicht ideal wie z.B. der Ajax Pager. Im weiteren sind grössere Änderungen geplant (Funktionserweiterungen, Mehrsprachigkeit, etc.). Es ist noch einiges zu tun!

Was ist LikeMag überhaupt?

Der Spiegel nennt nennt es ein „Boulevardportal“, LikeMag selbst nennt sich eine „Social News Plattform“. Nach NET-Metrix pendelt es zwischen dem 11. und dem 19. Rang der meist besuchten Websites in der Schweiz (Quelle: NET-Metrix-Audit). Zusätzlich zur Website gibt es noch das passende Print-Magazin (65’000 Exemplare), welches in Pendler-Boxen in den grösseren Städten zur Verfügung steht und hin und wieder auch verteilt wird. Monatlich findet eine Release Party statt mit leckeren Drinks und Fingerfood.

LikeMag / Sampling mit dem Velo in der Stadt Zürich

Quelle: pixelklinik.ch

Weitere Berichte & Informationen über LikeMag gibt’s hier:

Deine Erfahrungen?

Wie sind Deine Erfahrungen mit Performance Optimierung für Drupal? Welche Cache-Mechanismen nutzt Du und/oder welche Services? Teile Dein Wissen mit der Community und hinterlasse uns einen Kommentar.

1 Kommentar

Kommentar verfassen