Open Source im professionellen Einsatz

Severdienste Apache, Postfix, Oracle/MySQL und Samba optimieren

44 Servergebote

, , , ,

Die Firmen-Homepage ist seit 11.20 Uhr auf Slashdot verlinkt, das neue Massenmailing soll raus und die Datenbank muss Umfragedaten in Rekordzeit ausspucken: Dieser Artikel erklärt, mit welchen Techniken der Server die Belastung übersteht.

Serveroptimierung ist eine Überlebensfrage: Ab einer bestimmten Last sinkt seine Effizienz. Setzen ihn weitere Anfragen noch mehr unter Druck, bricht das System zusammen. Um den Ausfall eines unternehmenskritischen Dienstes zu verhindern, heißt es, vorsorgen, solange noch Zeit ist. Nicht immer ist schnellere Hardware die richtige Lösung. Auch eine optimale Konfiguration des Serversystems und der darauf laufenden Dienste kann Wunder wirken. Fünf Profis verraten, was Systemadministratoren unbedingt tun oder lieber lassen sollten, um den Datendurchsatz auf ihrem Web-, Mail-, Datenbank- oder Samba-Server so hoch wie möglich zu halten.

Eine gesunde Basis

Unabhängig vom Servertyp gibt es ein paar Grundregeln, die jeder Systemadministrator beachten sollte. Ralf Spenneberg, Buchautor und Dozent zum Thema Linux-Systemadministration, rät, für eine optimale Performanz Folgendes zu beherzigen.

1. Du sollt auf die Mischung achten! Für jeden Dienst gibt es mindestens einen Faktor, der die Performanz bestimmt: CPU, I/O, oder Speicherverbrauch. Daher ist es sinnvoll, die Dienste so zu verteilen, dass auf derselben Maschine möglichst nicht zwei Dienste laufen, die auch denselben Performanz-bestimmenden Faktor haben (Abbildung 1).

Abbildung 1: Eckige Keile in runde Löcher: Möglichst unterschiedliche Anforderungen zweier Dienste hinsichtlich CPU-Zeit, Speicher und I/O lasten einen Server besser aus als konkurrierende Anforderungen.

Abbildung 1: Eckige Keile in runde Löcher: Möglichst unterschiedliche Anforderungen zweier Dienste hinsichtlich CPU-Zeit, Speicher und I/O lasten einen Server besser aus als konkurrierende Anforderungen.

Ein Mailserver ist zum Beispiel meist durch die Platten- und Netzwerk-Latenz in seiner Geschwindigkeit begrenzt. Falls nicht ein integrierter Virenscanner zusätzlich Prozessorzeit beansprucht, hat die CPU auf einem für die Postverteilung zuständigen Server genug Zeit, um andere Aufgaben zu erledigen.

2. Du sollt überwachen! Nur durch genaue und langfristige Beobachtung lässt sich feststellen, welches die Performanz-bestimmenden Faktoren sind und in welchem Rahmen sich die Werte für CPU, I/O oder Speicherverbrauch im Normalbetrieb bewegen. »vmstat« und »sar«-Diskfunktion analysieren den Plattendurchsatz; »top«, »htop«, »uptime« oder »sar« helfen bei der Überwachung der CPU; »ps«, »top« oder »sar« bei der Bestimmung des Speicherverbrauchs.

Aus den bei Normallast vorgefundenen Werten lassen sich Volllastsituation extrapolieren. Eine Überwachung über SNMP (zum Beispiel mittels Nagios) warnt außerdem vor drohenden Katastrophen. Sind die Schwachstellen ermittelt, sollte überflüssiges Logging abgeschaltet werden.

3. Swappen ist eine Sünde und ein Gräuel vor dem Systemadministrator! Viele Serverdienste erlauben es, die Obergrenze für die Anzahl der maximal laufenden Instanzen festzulegen. Da das Ein- und Auslagern des Speichers andere Plattenzugriffe extrem verlangsamt, warten bei zu hoch angesetzter Obergrenze immer mehr Prozesse auf die Erfüllung ihrer I/O-Aufträge, was zu allem Überfluss zu weiterem Swappen führt.

Alle Dienste dürfen zusammen also nur so viele Instanzen erzeugen, wie im physikalischen Speicher der Servermaschine Platz finden.

RAM oder Platte?

4. Du sollst den Speicher deines Servers nicht unnütz vergeuden! Bei vielen Serverdiensten geht es auch kleiner: Es lohnt sich, nur benötigte Module zu laden oder Pakete entsprechend neu zu kompilieren. So passen mehr Instanzen in den RAM. Apache lädt in der Standardkonfiguration oft unnötig viele Module, bei Postfix ist es unter Umständen sinnvoll, Binaries ohne MySQL, TLS oder LDAP-Support zu bauen. Der Memory-Footprint von CDB ist viel kleiner als jener der Berkeley-DB. Bei Maps mit reinem Lesezugriff spart ein Wechsel des Maptype oft viel Speicher.

5. Du sollst die Partitionen für Daten, System und Log säuberlich trennen! Getrennte Partitionen erlauben es, das für die jeweilige Aufgabe beste Dateisystem zu wählen (zum Beispiel Ext 3 für die System- und XFS für die Datenpartition). Eigene Platten oder Raid-Systeme verhindern, dass der Plattenkopf bei vielen konkurrierenden Zugriffen sinnlos hin und her fliegt.

6. Du sollst die Aktionen deiner Dienste in ein Log schreiben! Ohne Logs stehen keine Daten für die Analyse oder Fehlersuche zur Verfügung. Ein »-« vor dem Namen der Logdatei in »/etc/syslog.conf« aktiviert das asynchrone Schreiben der Logfiles und mindert die Last auf das Dateisystem.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook