2002027

Den eigenen Webserver mit Linux auf Stress testen

29.10.2014 | 12:03 Uhr |

Wie schnell ein Webserver Seiten ausliefert und wie er sich unter Last verhält, wirkt sich auf den Erfolg einer Site aus. Leistungstests auf Client und Server zeigen genau, wie sich der eigene Webserver unter Stress verhält.

Für Betreiber eines Webservers, egal ob als Administrator oder als Webmaster, geben gezielte Leistungs- und Lasttests Aufschluss darüber, wie schnell der Webserver auf Anfragen reagiert, wie schnell sich Seiten aufbauen und ab welcher Last es Probleme gibt. Wenn es sich um einen Server für eine öffentliche Site im Internet handelt, wirkt sich die Performance auf das Ranking bei Suchmaschinen aus. Zu lange Antwortzeiten über drei Sekunden vergraulen bereits Besucher. Gerade wenn es sich um eine repräsentative, geschäftliche Site handelt, sollten Antwortzeiten gering bleiben und der Webserver bei normaler Last nicht schon am Limit arbeiten. Ein klares Bild über die Leistung des Webservers erlaubt eine bessere Planung, ob und wann ein besser ausgestatteter Server oder ein teureres Hosting-Paket nötig ist. Der Beitrag zeigt Tools für Linux, um Webserver von Clients aus einem Leistungstest zu unterziehen und dabei auf dem Server selbst die Auslastung zu beobachten. Der Rechner, von dem aus die Tests erfolgen, braucht eine schnelle und stabile Verbindung zum Server – über ein wackeliges WLAN sind die Antwortzeiten kaum aussagekräftig. Leistungs- und Stresstests sind ab einer DSL-Verbindung sinnvoll. Auch die Server-Anbindung spielt eine Rolle. Denn auch bei den besten Providern kann es vorkommen, dass es vorübergehend zu Routing-Problemen kommt und Pakete länger unterwegs sind. Wie es um die Verbindung bestellt ist, zeigt in der Shell das Tool tracepath an, etwa mit tracepath www.pcwelt.de .

Statische Webseiten erzeugen keine ernstzunehmende Serverlast. Dynamisch generierte Seiten hingegen, die auf PHP, Python oder Perl basieren, werden ohne Server-seitiges Caching schon bei Tests über eine gewöhnliche DSL-Verbindung erhebliche Last verursachen.

Schritt für Schritt zum Linux-Webadmin

Nützliche Übersicht für Webmaster: Webbasierte, kostenlose Dienste wie Google Pagespeed Insights eignen sich zur Ermittlung von Antwortzeiten im Normalbetrieb, ohne den Server zu stressen.Nützliche Übersicht für Webmaster: Webbasierte, kostenlose Dienste wie Google Pagespeed Insights eignen sich zur Ermittlung von Antwortzeiten im Normalbetrieb, ohne den Server zu stressen.
Vergrößern Nützliche Übersicht für Webmaster: Webbasierte, kostenlose Dienste wie Google Pagespeed Insights eignen sich zur Ermittlung von Antwortzeiten im Normalbetrieb, ohne den Server zu stressen.Nützliche Übersicht für Webmaster: Webbasierte, kostenlose Dienste wie Google Pagespeed Insights eignen sich zur Ermittlung von Antwortzeiten im Normalbetrieb, ohne den Server zu stressen.

Für Webmaster: Antwortzeiten überprüfen

Nicht zu verachten sind öffentliche Web-Apps, die nicht nur die Ladezeit seiner Seite und damit die Antwortzeit eines Webservers messen, sondern die Ergebnisse auch übersichtlich aufschlüsseln. Besonders interessant ist diese Methode für Webmaster, die eine öffentliche Seite pflegen und zudem wenig andere Einflussmöglichkeiten auf den Server haben, wenn es sich dabei um einen Shared Host oder Managed Host handelt. Google bietet unter https://developers.google.com/speed/pagespeed/insights eine Analyse der angegebenen URL an. Ins Detail geht die Web-App http://tools.pingdom.com/fpt/ , die in einer Zeitleiste die Antwortzeit nach angeforderten Ressourcen darstellt. Beide Dienste sind englischsprachig und erfordern die Eingabe einer kompletten URL. Da die Anfragen vom Server des Dienstanbieters erfolgt, ist die Internetverbindung des Clients hier unerheblich.

Auf dem Client: Apache Benchmark

Das Standardwerkzeug unter Linux, um Antwortzeiten zu messen, ist der Apache Benchmark. Dies ist ein Kommandozeilen-Tool für Clients, das trotz seines Namens nicht nur Ergebnisse für Apache Webserver liefert, sondern ganz allgemein Zugriffe auf einen Server über HTTP(S) auswertet. Apache Benchmark ist Teil der Apache-2-Utilities und in den Paketquellen aller verbreiteten Linux-Distributionen vorhanden. In Debian/Ubuntu/Mint wird es mit

sudo apt-get install apache2-utils

installiert. Auch Open Suse kennt das Paket, bei Fedora, Cent-OS und den anderen Red-Hat-Distributionen ist es dagegen im Paket „httpd-tools“ enthalten. Das Tool baut mehrere gleichzeitige Verbindungen zu einer angegebenen URL und erwartet zudem die gewünschte Anzahl der Anfragen für den Test. Eine Messung über zehn konkurrierende Verbindungen und insgesamt 100 Anfragen startet folgender Beispielbefehl:

ab -c10 -n100 http://www.pcwelt.de/

Beachten Sie den abschließenden Schrägstrich „/“, der nötig ist, wenn keine bestimmte Datei, sondern ein Verzeichnis über die URL abgerufen wird. In Open Suse erfolgt der Aufruf des Tools übrigens mit ab2 . Die Ausgabe präsentiert nach Abschluss der Anfragen eine Statistik. Die Zeile „Time taken for tests“ gibt an, wie viele Sekunden der Server für Abarbeitung aller Anfragen benötigte, „Requests per second“ zeigt, wie viele Anfragen der Server pro Sekunde bedienen kann, und der erste Wert von „Time per request“ ist die durchschnittliche Ladezeit pro Anfrage.

So funktionieren DDoS-Attacken

Belagerung: Stresstest mit Siege

Wie sich ein Webserver unter Stress verhält, zeigt das Werkzeug Siege, indem es eine große Zahl konkurrierender Anfragen von einem Client aus simuliert. Anders als bei Apache Benchmark geht es Siege um eine möglichst hohe Auslastung auf dem Server. Siege erzeugt auf dem Ziel-Server mit einer konfigurierbaren Flut von Anfragen schon über eine DSL-Verbindung eine ordentliche Last. Von einem anderen Server im Internet ausgeführt, wird Siege aber zum Denial-of-Service-Tool. Es ist deshalb wichtig, damit zeitlich begrenzte Stresstests zu starten, damit der Provider den Test nicht als DoS-Angriff einstuft und die IP-Adresse des Clients blockt. Und natürlich sollten Sie damit nur eigene Server belagern. Debian, Ubuntu, Mint und Fedora stellen das Tool über das Paket „siege“ bereit. Eine Belagerung des Servers unter der angegebenen URL mit 50 gleichzeitigen Verbindungen startet das Kommando

siege -c50 -b [URL]

und die Anfragen laufen endlos, bis Sie mit Strg-C abbrechen. Wie der Apache Benchmark verlangt auch Siege die Angabe einer kompletten URL. Nach dem Abbruch der Belagerung zeigt auch Siege eine Statistik der Messwerte an. Das Tool kann aber noch mehr: Mit dem Parameter „-f [Dateiname]“ nimmt es eine vorbereitete Textdatei mit mehreren URLs auf dem Server zum Testen entgegen. Pro Zeile muss die Datei dazu eine URL enthalten. Siege simuliert damit realistischere und anspruchsvollere Szenarien als der Apache Benchmark.

Auf dem Server: Auslastung beobachten

Während der Tests zeigt auf dem Server ein Systemmonitor, wie es um die Ressourcen bestellt ist. Voraussetzung dafür ist, dass man per SSH auf die Shell des Servers kommt. Das klappt natürlich nur dann, wenn der Server dies zulässt, also ein Shared Server, Virtual Private Server, Root-Server oder eine selbst administrierte Cloud-Instanz ist.

Ein übersichtlicher Systemmonitor für die Linux-Shell ist htop, das sich über das gleichnamige Paket in allen Linux-Distributionen nachinstallieren lässt, etwa mit sudo apt-get htop in Debian-Varianten. Der Aufruf erfolgt über den Aufruf htop ohne root-Rechte. In den oberen Zeilen zeigt htop die Prozessor-Aktivität pro CPU-Kern und darunter die aktuelle RAM-Auslastung. Die Taste Q beendet den Systemmonitor wieder.

Dieser Artikel stammt aus der LinuxWelt 5/2014

Zehn Top-Systeme für den USB-Stick - der Linux-Multiboot-Stick für jeden Einsatzzweck, die besten Power-Tricks für Mint 17 - das und mehr finden Sie in der neuen LinuxWelt 5/2014 .

0 Kommentare zu diesem Artikel
2002027