30.05.2015: DroidWiki, HHVM und mehr

Aus Android Wiki

Wer neben der DroidWiki auch die Neuheiten in der Wikipedia, welche von der Wikimedia Foundation betrieben wird, verfolgt, wird bereits zum Ende des letzten Jahres mitbekommen haben, zumindest wenn auch die technische Seite interessiert, dass zur Auslieferung der Seiten nun HHVM, eine alternative PHP-Implementierung, genutzt wird.[1][2] Die Vorteile des Wechsels merken vor allem die Nutzer der Wikipedia durch eine schnellere Beantwortung ihrer Anfragen. Auch wenn die DroidWiki ein vergleichsweise sehr kleines Projekt ist, haben auch wir uns Gedanken gemacht, wie wir von dieser Entwicklung profitieren können. Das Ergebnis darf ich heute auf dieser Seite etwas präziser darlegen.

Der aktuelle Zustand[Bearbeiten | Quelltext bearbeiten]

Die Messungen der Ladezeiten der Seiten der DroidWiki, sowohl Stichprobenartig und im Mittel, sind leider nicht sehr vielversprechend gewesen. Im Mittel mussten wir uns mit ca. 7 Sekunden zufrieden geben, bis eine Seite der Wiki vollständig geladen wurde (nach ca. 2-4 Sekunden wurde der Inhalt angezeigt). Damit sind wir weit entfernt von einer hochperformanten Seite, auf der das Surfen und Herumstöbern Spaß macht. Unsere Bemühungen, die Seitenladezeiten drastisch zu reduzieren haben in letzter Zeit immer mehr ihre Grenzen in der für die Wiki zur Verfügung stehenden Technik und Infrastruktur gefunden.

Die Power von HHVM (und einiges mehr)[Bearbeiten | Quelltext bearbeiten]

Es mussten also neue Lösungen, Ideen und Ansätze her. Als sinnvollsten Schritt kann man selbstverständlich die Anknüpfung an die Erfahrungen und Erfolge der Projekte der Wikimedia sehen, immerhin bewältigen diese Lösungen eine der TOP-Webseiten der Welt. Der Plan, HHVM als neue PHP-Implementierung für die DroidWiki zu nutzen wurde schnell gefasst, woraufhin sich ein Problem stellte: Unser derzeitiger Hoster, der bisher sehr zufriedenstellend funktionierte, würde eine HHVM-Nutzung sicher nicht einfach so durchwinken, zudem ist der Wechsel des PHP-Interpreters auch nur ein Schritt, bei dem wir sicher nicht aufhören können und wollen. Also muss ein neuer Hoster her, der den neuen, gewachsenen Anforderungen der DroidWiki gerecht werden kann, der sich allerdings auch preislich in einem angemessenen Rahmen bewegt. Nach einer längeren Suche und vielen Vergleichen von Angeboten haben wir den für uns passenden gefunden: die netcup Gmbh aus Karlsruhe!

Nach der Bestellung unseres neuen Servers ging es an die Einrichtung einer ersten Testversion (einer Kopie der DroidWiki) und zur nächsten Frage: Bisher haben wir Apache als Webserver verwendet, der auf Anfragen an droidwiki.de geantwortet hat. Wollen wir auch beim neuen Server weiterhin auf Apache setzten oder eine Alternative nutzen? Nach einigen Tests und vielen Test- und Erfarhungsberichten (speziell auch bei der Verwendung mit einer eher kleinen MediaWiki-Installation und begrenzten technischen Ressourcen) kristallisierte sich nginx als Gewinner heraus, sodass wir uns beim neuen Server von Apache trennen und nginx als neues Mitglied unseres Stacks begrüßen können! :)

Da jetzt der Webserver fest steht und die Installation von nginx und HHVM (im fastcgi-Modus) relativ problemlos und zügig von statten ging, kommt erneut eine Frage auf, die es zu beantworten gilt: MySQL oder MariaDB? Auch hier gilt als großes Beispiel die Erfahrungen der Wikimedia Foundation aufzugreifen und zu prüfen, ob sich diese auf unser kleines Projekt übertragen ließen. Bereits im April 2013 wechselten die mitunter größten Projektseiten der WMF (Wikimedia Foundation) von MySQL zu MariaDB 5.5.[3] Neben dem Performance-Zuwachs (den wir mit dem Wechsel unserer Infrastruktur natürlich vorrangig verfolgen) schließen wir uns gerne den restlichen Argumenten der WMF an und können diese übernehmen, bspw. die Entwicklung ausschließlich als Open Source Projekt, was uns die Entscheidung hin zu MariaDB sehr vereinfacht hat, wenn man es so sagen möchte.

Neben dem Wechsel der eben genannten Techniken, haben wir auf dem neuen Server auch einiges an Caching zu bieten. Neben der Verwendung von Memcached als Objekt-Cache nutzen wir nun auch Varnish als letzten Cache-Layer, der allerdings aktuell nur den Resourceloader cached (ggf. werden zu einem späteren Zeitpunkt auch Seiten der Wiki gecached).

Unser kompletter Stack sieht wie folgt aus:

  • Ubuntu 14.04.2 LTS
  • nginx
  • Varnish 4.0.3
  • HHVM 3.7.0
  • MariaDB 5.5
  • MediaWiki 1.26wmf8
  • Elasticsearch 1.4.4

Konklusion[Bearbeiten | Quelltext bearbeiten]

Eine wirklich aussagekräftige Bewertung des neuen Stacks und der neuen Server-Infrastruktur kann es selbstverständlich nicht direkt nach dem Wechsel geben, allerdings sind die ersten Test- und Messwerte vielversprechend: Bis zu 70% als Spitzenwert konnten wir die Ladezeit einzelner Seiten reduzieren, im Mittel kommen wir immer noch auf Messwerte von guten bis sehr guten 40-50%. Natürlich werden wir auch in Zukunft weiter darauf hinarbeiten, die DroidWiki noch besser und performanter machen, um euch den Besuch und das Herumstöbern so angenehm wie möglich zu machen!

  1. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  2. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  3. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.


← zurück zur Übersicht