3. Performance verbessern

 

3.1 Allgemein

Um die Geschwindigkeit eines Webservers zu erhöhen gibt es verschiedene Möglichkeiten. Je nach Webserver gibt es verschiedene Konfigurationsmöglichkeiten für webserverinterne Einstellungen, zum Beispiel die Maximalanzahl zulässiger Prozesse und die Speichergröße des Zwischenspeichers für Webseiten.Der Grad, mit der ein Webserver an die jeweiligen Bedürfnisse angepasst werden kann ist stark vom verwendeten Webserver abhängig.

Die Zeit von der Auslösung des Zugriffs auf einen Webserver bis zur vollständigen Übertragung der Seite kann aus Benutzersicht in zwei Abschnitte eingeteilt werden.Der erste Abschnitt ( Zeitabschnitt 1 ) ist die Dauer bis zum Eintreffen des Nachrichtenkopfes der Server-Antwort.Der zweite Abschnitt ( Zeitabschnitt 2 ) ist die Übertragung der Nutzdaten.

Browser verwenden mehrere Strategien, um Wartezeiten zu verkürzen.Werden diese vom Server unterstützt, verbessert sich das Antwortverhalten zum Teil beträchtlich. Bei der ersten Strategie werden mehrere Anfragen über unabhängige Verbindungen
( TCP/IP ) gleichzeitig gestellt. Die Dauer bis zum Eintreffen der letzten Antwort ( Zeitabschnitt 1 ) ist häufig kaum länger als bei einer Einzelanfrage.Bei der zweiten Strategie wird eine Verbindung für mehrere Anfragen genutzt, hierdurch werden die Zeiten für den Verbindungsaufbau eingespart ( Zeitabschnitt 1 ). Bei der dritten Strategie werden die Dokumente lokal abgelegt und bei einem erneuten Aufruf gegebenenfalls verwendet ( "caching" ). So kann die Übertragung der Nutzdaten ( Zeitabschnitt 2 ) oder sogar der gesamte Zugriff wegfallen.

Die Geschwindigkeit kann auch mit technischer Optimierung verbessert werden.Zwei technische Nadelöhre sind die Netzwerkverbindung und der Server-Rechner. Während die Anbindung an das Internet vor allem eine Frage des Budgets ist, kann die Auslastung des Servers durch zusätzliche oder schnellere Hardware reduziert werden.

3.2 Zugriffe vermeiden

Die Vermeidung von Zugriffen entlastet sowohl Netzwerk als auch Server und bietet dem Benutzer die kürzesten Antwortzeiten. Grundlage dieses Ansatzes ist die Nutzung der Proxy-Cache-Netzwerke und der Browser-Caches. Ein gute Zusammenarbeit kann hier mehr bewirken als aufwendige und teure Netzwerkanbindungen oder Hardware.

Caching bietet aus Server-Sicht die Möglichkeit, einen Teil der Arbeit auf externe Proxies oder Browser zu verlagern.Der Server muss hierzu lediglich mitteilen, wie lange das Dokument als gültig erachtet werden soll und ohne Rückfrage dem Cache entommen werden darf.

Wird diese Information nicht beigefügt, versuchen die Cache-Programme zumeist, eine Prognose der Gültigkeitsdauer anhand des Datums der letzten Änderung zu erstellen. Diese Schätzungen sind jedoch selten zutreffend und führen dazu,dass gültige Dokumente zu häufig und sich ändernde Dokumente zu selten aktualisiert werden. In der HTTP-Spezifikation wird eine Obergrenze von 24 Stunden empfohlen.

Vor allem häufig referenzierte Dokumente sollten mit Gültigkeitsinformationen versehen werden. Hierzu zählen Navigationsseiten, Frames und Icons. Bei Dokumenten, die sich nicht oder nur selten ändern ( Texte ), bieten sich sehr lange Gültigkeitsdauern an. In der HTTP-Spezifikation wird eine Obergrenze von einem Jahr empfohlen. Sollte sich ein Dokument vor Ablauf der Zeit dennoch ändern, besteht der sicherste Weg darin, ihm einen neue URL zuzuweisen.

Vorteil hierbei ist zum einen ,dass die Cache-Infrastruktur des Netzes besser ausgenutzt werden kann.Ein weiterer Vorteil ist, dass die Korrektheit der Cache-Einträge eher gewährleistet werden kann. Ebenso ist es ein Vorteil, dass durch diese Methode lange Cache-Zeiten möglich sind. Der einzige Nachteil, der sich daraus ergibt, ist der relativ hohe Konfigurationsaufwand.

3.3 Hardwareoptimierung

Ist der Überlastung des Servers mit Mitteln der Konfiguration nicht mehr beizukommen, bleibt als Möglichkeit immer noch die Erweiterung der Serverhardware.

3.3.1 Server aufrüsten

Grundvoraussetzung ist eine ausreichende Versorgung mit Arbeitsspeicher. Beginnt des Betriebssystem mit dem Auslagern von Speicherbereichen, besteht Handlungsbedarf. Wenn der Speichermangel aufgrund des normalen Server-Betriebs auftritt, ist in der Regel eine Erweiterung nötig. Vorausgesetzt sei hierbei eine diesbezüglich fehlerfreie und den Anforderungen angemessene Konfiguration. Über den Prozessspeicher hinaus sollte genug RAM als Festplatten-Cache vorhanden sein. Im Idealfall können alle häufig referenzierten Seiten im Hauptspeicher gehalten werden. Erst bei einer ausreichenden Ausstattung mit RAM ist es sinnvoll, bei den anderen Komponenten die Leistung zu erhöhen.

Bei der CPU bietet sich neben der Wahl einer schnelleren Variante die Verwendung von Multiprozessorsystemen ( SMP ) an.

Zur Erhöhung der Festplattenleistung sind SCSI-Systeme mit einem schnellen und intelligenten Controller, der das Host-System entlastet, gut geeignet. Auch der Betrieb in einem entsprechenden RAID-Modus kann sinnvoll sein. Einige Betriebssysteme ( so auch Linux ) bieten software-seitiges RAID an, was zumindest zur Evaluation genutzt werden kann.

Generell ist es sinnvoller, gezielt die Komponenten aufzubessern, die die Systemleistung am stärksten beeinträchtigen. Liegt der Flaschenhals bei der Rechenleistung, bringt die Verwendung eines RAID-0-Feldes aus 16 Festplatten wenig. Ein ausgewogenes System ist dem sicherlich vorzuziehen.

Der Vorteil der Serveraufrüstung liegt darin, dass die Struktur und die Konfiguration nicht verändert werden müssen.Die Nachteile sind, dass der Preis leistungsfähiger Komponenten häufig stärker steigt als die Leistung und dass die Ausfallwahrscheinlichkeit mit der Anzahl der beteiligten Komponenten steigt.

3.3.2. Reverse Proxy-Cache

Bei diesem Ansatz wird ein zweiter Rechner als Proxy-Cache verwendet, der zwischen das Internet und den Webserver geschaltet wird.Er wird von außen wie der Webserver angesprochen und reicht die Anfragen gegebenenfalls an den wirklichen Webserver weiter. Falls die Netzwerkverbindung der Engpass sein sollte, kann er ( aus technischer Sicht ) auch auf der anderen Seite aufgestellt werden. Beide Rechner können von der Hardware her entsprechend ihrer Aufgabe optimiert werden.

Der Proxy sollte über möglichst viel RAM verfügen, um bei einer Anfrage nicht auf die Festplatte zugreifen zu müssen. Zumindest alle häufig angesprochenen Dokumente sollten vollständig im Hauptspeicher gehalten werden können.

Die Auswahl der Hardware des Webservers hängt von dessen Aufgabe ab. In der Regel sind hier neben einer ausreichenden RAM-Versorgung CPU- und Festplattenleistung wichtiger ( siehe letzten Abschnitt).

Ein für derartige Aufgaben gut geeigneter Proxy-Cache ist Squid, der zur freien Software zählt und auch mit hohen Lastanforderungen gut zurechtkommt.

Der zustätzliche Aufwand beim Webserver besteht wiederum darin, den Antworten Caching-Informationen beizufügen. Bereits eine Gültigkeitsdauer von wenigen Minuten kann eine spürbare Entlastung mit sich bringen. Allerdings werden die Zeiten dann auch client-seitigen Caches verwendet und sollten daher nicht zu kurz sein.Dynamische Dokumente, die nicht gecacht werden sollen, müssen entsprechend gekennzeichnet werden, indem die Gültigkeitsdauer auf 0 gesetzt wird.

3.3.3 Verteilter Webserver

Man kann auch mehrere Webserver einsetzen, die unterschiedliche Aufgaben übernehmen. Beispielsweise kann ein Server den Hauptbetrieb mit den weniger aufwendigen Ressourcen realisieren, während ein anderer rechenintensive Zugriffe bearbeitet ( Suche, Datenbankrecherchen ). Eine Überlastung des zweiten Servers würde zumindest den Normalbetrieb kaum beeinträchtigen. Beide Maschinen können für ihre jeweiligen Aufgaben optimiert werden.

Mit einer entsprechenden Konfiguration können einzelne Anfragen an die entsprechenden Server weitergeleitet werden. Der Proxy wird dabei wiederum im Reverse-Modus eingesetzt.

3.3.4 Kombination

Auch eine Kombination der vorigen Varianten kann sinvoll sein. So können alle Anfragen zunächst über eine spezialisierten ( ausfallsicheren ) Reverse-Proxy ( mit Cache ) geleitet werden. Dieser verteilt sie dann auf verschiedene Webserver. So können auch mehrere gleiche Server zur Lastverteilung oder Erhöhung der Ausfallsicherheit genutzt werden.

 

Kay Timmermann