Minimale Antwortzeit für Webanwendungen auf der Seagate Dockstar

Gestern bekam ich Post von einem Leser meines Blogartikels zur Seagate Dockstar. Er fragte mich:

Wie stelle ich lighttpd inkl. PHP und MySQL auf der Seagate Dockstar optimal ein? Ich habe Performance Probleme mit WordPress bzw. phpsysinfo. (Jörg P.)

Ist es überhaupt möglich, auf einer Dockstar aktuelle Webanwendungen so zu betreiben, dass man eine „optimal Performance“ erreicht?

Für Kurzentschlossene:
dockstar_antwortzeit.tar.gz (Konfigurationsbeispiele zum Artikel, inklusive Optimierungen)

Testumgebung

Als angehender Informatiker ergeben sich für mich aus Jörgs Frage sofort zwei weitere: Was ist „optimal“ und was ist „Performance“? Die Frage müsste man in diesem Zusammenhang mit minimaler Antwortzeit beantworten. Um die Systemkonfiguration für die minimale Antwortzeit zu finden, darf außerdem die Netzlast möglichst keine Rolle spielen.

Mit diesen Anforderungen kann man dann eine Testumgebung wählen. In diesem Fall die folgende:

  • Eine Dockstar mit Debian GNU/Linux „lenny“
  • Ein Server mit Debian GNU/Linux „etch“
  • In einem Subnetz mit 100 Mbit/sec Ethernet verbunden
  • Netzlast unter 1%

Als Software auf der Dockstar kam zum Einsatz:

  • lighttpd (1.4.19-5+lenny1)
  • php5-cgi (5.2.6.dfsg.1-1+lenny9)
  • php5-mysql (5.2.6.dfsg.1-1+lenny9)
  • php5-suhosin (0.9.27-1)
  • mysql-server-5.0 (5.0.51a-24+lenny4)
  • WordPress 3.0.1 DE

Alle Software-Pakete wurden in Voreinstellung belassen. Für die Benchmarks kam ab (der Apache Benchmark) zum Einsatz. Der Benchmark sag wie folgt aus:

  • Abrufen der Startseite des Blogs ohne statische Inhalte
  • Jeweils zehn Anfragen hintereinander
  • Jeweils eine, zwei oder drei Anfragen gleichzeitig
  • Jeden Durchlauf mit ab dreimal wiederholen und Median berechnen

Aufgrund der geringen zur Verfügung stehenden Kontingente an Arbeitsspeicher und Prozessorleistung macht es keinen Sinn, mehr als drei Anfragen gleichzeitig zu testen.

Ergebnis Standard Konfiguration

Dabei sind von links nach rechts jeweils die Ergebnisse bei einem bis drei konfigurierten php-cgi Prozessen abgebildet. Während des Benchmarks verbrauchte jeder php-cgi Prozess 24 MB Arbeitsspeicher.

Besonders interessant ist die Antwortzeit pro Anfrage. Bei einem und zwei php-cgi Prozessen liegt sie bei ~ 2600 Milisekunden, bei drei Prozessen steigt sie aber schon um 350 ms auf ~2950 Milisekunden. Eine kurze Stichprobe mit zehn gleichzeitigen Anfragen erzeugte einen Ausfall des Webservers für zehn Minuten, weil die Dockstar den Auslagerungsspeicher benutzen musste.

Auswertung

Aufgrund des deutliche Anstiegs der Antwortzeit pro Anfrage bei drei php-cgi Prozessen fällt die Wahl maximal zwei Prozesse zu starten leicht.

Während des Benchmarks fiel außerdem auf, dass der Prozessor der Dockstar der limitierende Faktor für die Antwortzeit war. Ein Opcode-Zwischenspeicher, der die einmal übersetzten PHP-Skripte im Arbeitsspeicher für erneute Aufrufe zwischenspeichert kann den Prozessor entlasten. Um nicht auf externe Pakete angewiesen zu sein, ist php5-xcache empfehlenswert.

Die größte Gefahr für die Dockstar dürfte aber eine Flut an Anfragen sein, die das Gerät zum auslagern auf den USB-Stick oder eine USB-Festplatte zwingt. Genau das könnte auch den starken Anstieg der Antwortzeit bei drei gleichzeitig laufenden php-cgi Prozessen verursacht haben. Um das zu verhindern, muss der maximal durch PHP reservierbare Speicher so beschränkt werden, dass selbst bei Volllast der Auslagerungsspeicher nicht verwendet wird. Maximal 48 MB sollte jeder der beiden Prozesse reservieren können, um noch genug Raum für den Dateisystem-Zwischenspeicher.

Die Optimierung des MySQL-Servers ist stark vom Anfrageverhalten der Benutzer abhängig. Sinnvoll scheint es, die Zwischenspeicher klein zu halten und möglichst auf InnoDB zu verzichten.

Gegenüberstellung

Nach Installation und Einrichtung der optimierten Konfiguration ergibt sich ein ganz anderes Bild.

Links die Antwortzeit bei drei gleichzeitigen Anfragen mit Standard Einstellungen, rechts bei Verwendung der hier angebotenen Konfiguration. Die Antwortzeit ist auf ~ 1940 Milisekunden gesunken, eine Verbesserung um eine Sekunde. Außerdem bricht die Dockstar bei mehr als zwei Anfragen gleichzeitig nicht mehr ein, sondern liefert konstante Antwortzeiten. Die konstanten Antwortzeiten dürften subjektiv die größte Verbesserung für die Benutzerbarkeit bringen. Eine Stichprobe mit zehn gleichzeitigen Anfragen brachte das Gerät nicht mehr aus dem Takt.

Zusammenfassung

Die Dockstar eignet sich nicht als Webserver für dynamische Webseiten wie WordPress im produktiven Betrieb. Für kleine private Blogs mit wenigen gleichzeitigen Anfragen oder Webseiten mit statischen Inhalten schon.

Zwei Anfragen gleichzeitig pro Sekunde mögen wenig erscheinen, würden aber ausreichen um ungefähr 3200 Besucher, die im Durchschnitt drei Unterseiten aufrufen (Statistik aus meinen Blog entnommen) zu bedienen.

2 Kommentare

Pingback: Anonymous
JP 1. Oktober 2010 Antworten

Hallo Falk,

danke für deine Bemühungen. Habe es gerade bei mir umgesetzt, im Durchschnitt ist die Ladezeit für die Hauptseite des WordPress Blogs um 1 Sekunde gesunken, dauert jetzt ~ 2,5 Sek statt ~ 3,5 Sek.

Da scheint die kleine Box doch etwas überfordert. Für den Heimnetz-internen Gebrauch sollte es ausreichen.

Danke nochmal

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.