So optimieren Sie Ihren dedizierten Webserver
Server-Tuning
Einleitung
So optimieren Sie Ihren dedizierten Webserver
Dedizierte Webserver haben nicht nur den Vorteil, dass Ihnen die gesamte
Systemleistung des Rechners alleine zur Verfügung steht. In der Regel
besteht auch voller Systemzugriff, so dass man als Kunde den Server nach
Belieben konfigurieren und den eigenen Bedürfnissen anpassen kann. Auch
die so genannten V-Server bieten meist vollen Systemzugriff, nur mit dem
Unterschied, dass mehrere dieser Server auf einem Rechner laufen.
Dennoch können Sie diesen virtuellen dedizierten Server in der Regel
nach Belieben konfigurieren.
Internet Professionell zeigt Ihnen
in diesem Beitrag, wie Sie mehr aus Ihrem dedizierten Server
herausholen. Dabei gehen wir sowohl auf dedizierte Server unter Linux
als auch unter Windows ein. Der Schwerpunkt dieses Beitrags liegt jedoch
auf der Linux-Version, da diese deutlich beliebter ist als das
entsprechende Windows-Pendant. Selbstverständlich können wir im Rahmen
dieses Beitrags nicht auf alle Optimierungsmöglichkeiten eingehen. Daher
stellen wir an dieser Stelle einige der nützlichsten Tuning-Tipps vor.
Als Versuchobjekte dienen hierfür die neuen dedizierten Server von 1&1 (www.
hosting.1und1.de). Unter Linux kommt der Root-Server XL mit Suse Linux
9.0 und Apache 2 zum Einsatz, unter Windows der Windows-Server 2003 XL
mit dem gleichnamigen Betriebssystem in der Web-Edition und dem Internet
Information Server (IIS) 6.0.
Eingriffsmöglichkeiten
So optimieren Sie Ihren dedizierten Webserver
Was beim Desktop-Rechner der Fall ist, gilt natürlich auch für Webserver
mit entsprechenden Betriebssystemen: Das Open-Source-System Linux bietet
im Vergleich zu seinem kommerziellen Konkurrenten aus Redmond deutlich
mehr Eingriffsmöglichkeiten, um an der Konfiguration zu schrauben.
Neben der Anpassbarkeit des Betriebssystems spielt auch der eingesetzte
Webserver eine gewichtige Rolle. Zwar lässt sich unter Windows auch der
Internet Information Server umfassend konfigurieren, der
Apache-Webserver auf dem Linux-System bietet jedoch Unmengen an
Konfigurationsmöglichkeiten und somit auch deutlich mehr Potenzial für
Optimierungen.
Bevor Sie loslegen
So optimieren Sie Ihren dedizierten Webserver
Beachten Sie vor dem Loslegen, dass falsche Einstellungen am Server
unter Umständen die Folge haben, dass sich dieser nicht mehr
administrieren lässt. Dies kann Ihnen sowohl unter Windows als auch
unter Linux passieren.
Zwar haben Sie bei vielen dedizierten
Mietservern die Möglichkeit, über eine so genannte
Wiederherstellungskonsole auf den Rechner zuzugreifen, auch wenn dieser
nicht mehr regulär über das Internet ansprechbar ist ? dennoch sollte
man hier kein Risiko eingehen. Wie Sie im Fall der Fälle Ihren Server
wiederbeleben, erfahren Sie in den FAQs Ihres Webhosters. Im Kasten am
Ende des Beitrags finden Sie eine Übersicht mit Links zu den FAQs
einiger Webhoster.
Wenn Sie Änderungen an der Konfiguration der
Server vornehmen möchten, sollten Sie daher zumindest über grundlegende
Kenntnisse des entsprechenden Betriebsystems und der Webserver-Software
verfügen. Zudem sollten Sie nicht mehrere Änderungen gleichzeitig
vornehmen: immer nur eine Änderung, und dann prüfen, was passiert.
Komprimierung statischer Dateien
So optimieren Sie Ihren dedizierten Webserver
Nun aber genug der Theorie. Im ersten Schritt sorgen wir dafür, dass der
Internet Information Server auf unserem Windows-System die
auszuliefernden Daten komprimiert. Dies spart zum einen
Übertragungsvolumen, und zum anderen werden die angeforderten Daten
schneller ausgeliefert. Auch wenn ein dedizierter Server mit recht guter
Bandbreite am Internet hängt, ist also die Kompression durchaus
sinnvoll. Zudem unterstützen mittlerweile alle derzeit gängigen
Webbrowser die HTTP-Kompression.
Allerdings steigt bei der
Kompression auch die Prozessorlast, da alle Daten vor dem Ausliefern
erst gepackt werden müssen. Auch die Latenzzeit des Servers steigt an.
In der Regel hat jedoch ein dedizierter Webserver keine anderen Aufgaben
zu bewältigen als Internet-Dienste wie Web- und Mail-Server zur
Verfügung zu stellen. Somit dürfte die gesteigerte Prozessorlast in den
meisten Fällen eher zu vernachlässigen sein.
Der Internet
Information Server unterstützt sowohl die Kompression von statischen als
auch von dynamischen Web-Inhalten. Um das Packen der Daten zu
aktivieren, gehen Sie im IIS-Manager in die Eigenschaften der Websites
und auf den Reiter Dienst. Hier wählen Sie nun Statische Dateien
komprimieren aus. Die Angaben unter Temporäres Verzeichnis sollten Sie
ohne Änderungen übernehmen. Dabei handelt es sich um das Verzeichnis, in
welchem die komprimierten Daten abgelegt werden. Falls Sie dennoch ein
abweichendes Verzeichnis angeben möchten, achten Sie darauf, dass es
sich um ein NTFS-formatiertes, ungepacktes Verzeichnis handelt, welches
nicht freigegeben ist. Zu guter Letzt legen Sie noch die Größe des
Verzeichnisses fest. Wird die maximale Größe erreicht, löscht der Server
die am längsten unbenutzten Dateien. Das temporäre Speichern der
komprimierten Dateien hat den Vorteil, dass von Clients häufig
angeforderte Daten nicht jedes Mal neu komprimiert werden müssen.
Festlegen von Dateiendungen
So optimieren Sie Ihren dedizierten Webserver
Wenn beim Internet Information Server 6.0 die Kompression aktiviert ist,
werden standardmäßig lediglich Dateien mit der Endung HTM, HTML sowie
TXT komprimiert. Jedoch gibt es auf einem Webserver meist eine Menge
weiterer statischer Dateiformate, die von einer Komprimierung
profitieren, beispielsweise XML, CSS oder JS. Daher sollten Sie diese
Dateiendungen ebenfalls in die entsprechende Liste des
IIS-Kompressionsfilters aufnehmen. Hierzu geben Sie auf der Konsole die
folgenden beiden Kommandos ein:
cscript
%SystemDrive%\Inetpub AdminScripts\adsutil.vbs set W3SVC/
Filters/Compression/deflate/HcFile Extensions htm html txt css js xml
cscript %SystemDrive%\Inetpub\Admin Scripts\adsutil.vbs set W3SVC/Filters
/Compression/gzip/HcFilcscripte Extensions htm html txt css js xml
Je nach den Gegebenheiten Ihres Webserver können Sie nach Belieben weitere
Dateiendungen hinzufügen.
Dynamische Dateien
So optimieren Sie Ihren dedizierten Webserver
Für die Komprimierung von dynamischen Inhalten sind weitere
Konfigurationen am Internet Information Server notwendig. Hierzu wählen
Sie zusätzlich im entsprechenden Dialogfeld neben der Komprimierung
statischer Dateien den Punkt Anwendungsdateien komprimieren aus.
Allerdings sollten Sie beachten, dass der IIS dynamische Dateien nicht
in komprimierter Form zwischenspeichern kann, sondern bei jeder
Anforderung erneut komprimiert, was wiederum im Vergleich zu den
statischen Dateien deutlich mehr Prozessorlast erfordert.
Kompressionslevel festlegen
So optimieren Sie Ihren dedizierten Webserver
Neben dem Aktivieren und Deaktivieren des Kompression können Sie zudem
die Kompressionsstufe festlegen: Bei größerer Kompression wird die
auszuliefernde Datei zwar kleiner, braucht aber auch länger, bis sie
gepackt ist, und erfordert damit mehr Prozessorlast. Die Kompression
lässt sich beim Internet Information Server in Stufen zwischen 0 und 10
festlegen, mit folgender Aufteilung:
– 0 bis 3: schwache
Komprimierung
– 3 bis 9: Standard-Komprimierung
– 10: starke
Komprimierung
In den Standardeinstellungen erfolgt bei statischen
Dateien die Komprimierung mit der Stufe 10 und bei dynamischen Dateien
mit der Stufe 0.
Zum Festlegen der Kompressionsstufe ist
allerdings ein wenig Handarbeit nötig. Öffnen Sie hierzu mit einem
Text-Editor die Datei MetaBase.xml und legen Sie unter
HcOnDemandCompLevel den entsprechenden Wert für statische Dateien fest,
für dynamische Dateien unter HcDynamicCompressionLevel. Auf dem
1&1-System im Beispiel liegt die Datei unter C:\Windows\system32\inetsrv.
Kompression für Apache
So optimieren Sie Ihren dedizierten Webserver
Die oben genannte Möglichkeit der HTTP-Kompression steht natürlich auch
beim Apache-Server auf dem Linux-System zur Verfügung. Der
Apache-Webserver beinhaltet ab Version 2 das neue Modul mod_deflate. Das
Modul komprimiert die Webseiten vor dem Ausliefern an die Clients. Das
Apache-Modul kann auch eingehende Daten dekomprimieren, was jedoch nicht
benötigt wird. Daher gehen wir an dieser Stelle nicht näher darauf ein.
Das Modul mod_deflate arbeitet als Filter. Dies bedeutet, dass am Webserver
ein und ausgehende Daten dieses Modul passieren. Eingehende Daten werden
dabei vom Input-Filter verarbeitet, ausgehende Daten vom Output-Filter.
Es können mehrere Filter konfiguriert werden, auch die Reihenfolge der
Filter lässt sich dabei explizit festlegen. Eine Beschreibung der Filter
unter Apache 2.x finden Sie unter httpd.apache.org/docs-2.0/ filter.html.
Mit folgender Direktive konfigurieren Sie mod_deflate als Ausgangsfilter:
SetOutputFilter DEFLATE
An dieser Stelle ist zu beachten, dass
nicht alle Webbrowser die Komprimierung aller Daten unterstützen, auch
nicht in der aktuellen Browsergeneration. Legen Sie daher fest, dass nur
HTML-Dateien gepackt werden sollen. Dies erledigen Sie mit der Direktive:
AddOutputFilterByType DEFLATE text/html
Unter der Adresse httpd.apache.org/docs- 2.0/mod/mod_deflate.html finden Sie
eine detaillierte Beschreibung zur Einrichtung des Kompressions-Filters
mit weiteren Hinweisen und Erläuterungen. So empfiehlt sich
beispielsweise das Einrichten einer Browserweiche, da noch immer
zahlreiche Surfer mit älteren Browsern unterwegs sind, die keine
Komprimierung unterstützen, unabhängig vom Dateiformat.
Turbo für CGIs
So optimieren Sie Ihren dedizierten Webserver
Trotz zahlreicher Alternativen ist das Common Gateway Interface, kurz
CGI, nach wie vor eine beliebte Technik für dynamische Web-Inhalte. Da
diese CGI-Skripts unter Umständen sehr rechenintensiv sind, gibt es
entsprechende Erweiterungen für Apache. Bei FastCGI (www.fastcgi.com)
handelt es sich um eine von der Programmiersprache unabhängige
CGI-Erweiterung, welche eine hohe Performance ermöglicht, unabhängig von
den Limitierungen der Server-APIs. Das entsprechende Apache-Modul mod_
fastcgi ist Open-Source-Software und steht so jedem frei zur Verfügung.
FastCGI-Applikationen sind schneller, da sie persistent sind und es
beispielsweise keinen Initialisierungs-Overhead gibt. Dies ermöglicht
es, Applikationen zu entwickeln, die normalerweise nicht in das
CGI-Schema passen und unpraktisch beziehungsweise unmöglich wären, zum
Beispiel ein sehr großes Perl-Skript oder eine Applikation, welche eine
Verbindung zu mehreren Datenbanken benötigt.
Eine allgemeine
Beschreibung des Moduls mod_fastcgi finden Sie unter der Adresse
www.fastcgi.com/mod_fastcgi/docs/ mod_fastcgi.html, eine
Installationsanleitung unter www.fastcgi.com/mod_fastcgi/ INSTALL.
Für den Windows-Server steht ebenfalls eine entsprechende FastCGI-Erweiterung
zur Verfügung ? für den Internet Information Server als ISAPI.
Detaillierte Informationen hierzu finden Sie unter
www.caraveo.com/fastcgi.
Weitere Apache-Optimierungen
So optimieren Sie Ihren dedizierten Webserver
Der Apache-Webserver 2 beinhaltet im Vergleich zum Vorgänger 1.3
zahlreiche Optimierungen, von denen die meisten bereits standardmäßig
aktiviert sind. Dennoch gibt es weiterhin einige Einstellungen, an denen
der Administrator für eine bessere Performance Hand anlegen kann.
Wie in den meisten Fällen zählt auch bei einem Webserver das Motto: Je
mehr Hauptspeicher, desto besser. Natürlich können wir bei unserem
dedizierten System nicht einfach hingehen und bei Bedarf neue
Speicherriegel einstecken. Also heißt es, mit dem verfügbaren
Hauptspeicher auszukommen. Bei sehr beliebten Webseiten mit einer Menge
Besuchern – und vielleicht noch zahlreichen dynamischen Inhalten und
Skripts – kann unter Umständen ein Engpass auftreten.
Reicht der
vorhandene Hauptspeicher nicht mehr aus, so werden die anlaufenden Daten
auf der Festplatte ausgelagert. Dies sollte auf jeden Fall vermieden
werden, da dies den Apache-Webserver stark ausbremst. Daher sollten Sie
mit MaxClients festlegen, wie viele Anfragen der Server gleichzeitig
annehmen soll. Damit verhindern Sie, dass zu viele gleichzeitige
Anfragen eintreffen und unter Umständen den Webserver in die Knie
zwingen.
Damit Sie einen Anhaltspunkt haben, welchen Wert sie
festlegen sollen, ermitteln Sie zunächst die durchschnittliche Größe
Ihres Apache-Prozesses, beispielsweise mit dem Kommando top. Teilen Sie
dann diesen Wert durch den verfügbaren Arbeitsspeicher und lassen noch
ein wenig Spielraum als Reserve. Zum Festlegen von MaxClients finden Sie
eine ausführliche Beschreibung unter
httpd.apache.org/docs-2.0/mod/mpm_com mon.html#maxclients.
Wer
keine Scheu davor hat, auf seinem dedizierten Server tiefer in der
Apache-Konfiguration herumzuspielen, finden auf den offiziellen
Apache-Webseiten unter httpd.apache.org/docs-2.0/misc/perf-tuning.html
zahlreiche Tipps und Tricks für weitere Performance-Optimierungen des
Open-Source-Webservers.
Nicht nur der Webbrowser
So optimieren Sie Ihren dedizierten Webserver
Auf dem Linux-Server gibt es natürlich mehr Möglichkeiten zur
Performance-Optimierung als nur die Apache-Konfiguration. Das
Linux-System bietet zahlreiche Schrauben, an denen man drehen kann.
Beachten Sie hierbei aber auch, dass sich Schrauben bekanntlich in zwei
Richtung drehen lassen – drehen Sie in die falsche Richtung, kann die
Optimierungs-Aktion schnell den gegenteiligen Effekt haben und den
Server unerwünscht verlangsamen.
Die wirkungsvollste Methode zum
Optimieren einer Linux-Distribution ist nach wie, den Kernel anzupassen
– also das Herz des Linux-Systems. Wenn man den Kernel an die eigenen
Bedürfnisse und vor allem an die Hardware anpasst, lässt sich einiges an
Performance herausholen. Allerdings sollte man bei einem dedizierten
Server hiervon Abstand nehmen: Zum einen kennen Sie in der Regel nicht
im Detail die verwendete Hardware, zum anderen ist das Risiko zu groß,
den Server lahm zu legen.
Nichtsdestotrotz lassen sich einige
Performance-relevante Kernel-Variablen auch im laufenden Betrieb des
Systems ändern und aus diesem so noch einige Ressourcen herauskitzeln.
In der Ausgabe 3/2004 der Internet Professionell finden Sie ab Seite 54
einen Beitrag zum Tunen Ihres Linux-Kernels im laufenden Betrieb.
Entschlackungs-Kur der Dienste
So optimieren Sie Ihren dedizierten Webserver
Eine schlechte Angewohnheit von Windows ist es, standardmäßig mit einer
Menge aktivierter Systemdienste zu laufen, wobei viele davon überhaupt
nicht benötigt werden. Viele der Dienste verbrauchen daher lediglich
Arbeitsspeicher, was in unserem Fall den Server unnötig ausbremst. Daher
sollten Sie sich unter Start, Programme, Verwaltung, Dienste einmal
durch die Liste der Dienste arbeiten und unnötige Speicherfresser
deaktivieren.
Auch auf dem Linux-System lohnt sich ein Blick auf
die laufenden Dienste. Seit Suse Linux 8.0 – und somit auch auf unserem
System mit Suse Linux 9.0 – findet sich unter /etc/rc.config nicht mehr
die bekannte Variable START_DIENST. Zu Gunsten der Linux-Standard-Base,
kurz LBS, ist der Start von Systemdiensten über entsprechende Links in
/etc/init.d/ rc?.d gesteuert. Änderungen können Sie über die beiden
Kommandozeilen-Tools insserv und chkconfig vornehmen.
Um einen
Überblick zu bekommen, was auf dem Server alles läuft, geben Sie auf der
Kommandozeile folgendes Kommando ein, ohne Parameter:
chkconfig
Daraufhin erhalten Sie eine Liste der laufenden
Dienste auf dem Server.
Weitere Informationen zur Verwendung der
beiden Kommandos finden Sie in den Manpages (man insserv sowie man
chkconfig) sowie in der Datei /etc/init.d/ README. Alternativ können Sie
auch über das Suse-Konfigurations-Tool Yast entsprechende Änderungen der
Dienste vornehmen.
Wenn Sie auf Ihrem Server bestimmte Services
nicht nutzen beziehungsweise zur Verfügung stellen, können Sie den
entsprechenden Dienst deaktivieren. An dieser Stelle sollten Sie jedoch
genau wissen was Sie tun. Im schlimmsten Fall legen Sie den eigenen
Zugriff auf Ihren Server lahm.
Follow up
So optimieren Sie Ihren dedizierten Webserver
Selbstverständlich handelt es sich bei den dargestellten Tipps nur um
eine Auswahl an Optimierungen für dedizierte Server. Auf Grund des
vollen Systemzugriffs stehen Ihnen alle Möglichkeiten offen. Beide
Systeme bieten noch viel Spielraum für Optimierungen.
Wer sich
für weitere Tipps und Tricks interessiert, findet im Internet zahlreiche
weitere Quellen mit Informationen. Entsprechende Suchbegriffe in den
großen Suchmaschinen liefern hier zig Ergebnisse.