amnesie
New Member
Nach
dem in letzter Zeit desöfteren verschiedene Anfragen hier aufgetaucht sind, in welcher Grössenordnung man Server dimensionieren muss, um bestimmte Webseiten zu betreiben (oder auch anders herum), will ich im Folgenden mal eine Reihe von Hinweisen dazu geben.
Üblicherweise werden diese Webseiten dynamisch aufgebaut; im Hintergrund arbeitet eine Anwendung, die auf PHP, Python, Perl oder Java basieren. Meistens ist auch noch eine Datenbank (mysql, postgresql, ...) mit dabei. Dabei laufen all diese Bestandteile üblicherweise auf demselben Server, daß man eigentlich nicht mehr von einem reinen Webserver reden kann, sondern eher von einer Kombination aus Webserver, Applikationserver und Datenbankserver. Daher muss man bei der Dimensionierung und Leistungsbewertung auch diese Komponenten berücksichtigen.
Parameter
Im folgenden eine kurze Übersicht über die Hardware Parameter, die für die 3 oben genannten Bereiche relevant sind.
Daraus lassen sich folgende Schlüsse ziehen:
RAID oder kein RAID
Für RAID gibt es genau 2 Einsatzzwecke: Geschwindigkeitsverbesserung oder Verbesserung der Verfügbarkeit. RAID ist kein Backup.
Eine Beispiel-Dimensionierungen
Eine reiner Webserver: Ich betreibe eine Reihe von großen Websites, bei denen als Frontends 2 Maschinen mit jeweils 2 CPUs (1 Ghz) und 4G RAM als reiner Cache eingesetzt werden (mit pro Maschine 3 Instanzen eines Apache 2.0.59) und einem Loadbalancer davor. Tagsüber haben diese Maschinen eine Load von etwas über 1 (meist wegen IO, die CPU tun meistens nichts) und sie schieben im Monat knapp 5 TB ins Internet (im Peak ca 16000 requests pro Minute und Maschine). Die Daten (die kommen über ein aufgebohrtes mod_proxy auf diese Maschinen) liegen auf den Systemplatten (2x73G im RAID 1). Der RAM wird grösstenteils als Cache für die knapp 50 GB Content genutzt.
dem in letzter Zeit desöfteren verschiedene Anfragen hier aufgetaucht sind, in welcher Grössenordnung man Server dimensionieren muss, um bestimmte Webseiten zu betreiben (oder auch anders herum), will ich im Folgenden mal eine Reihe von Hinweisen dazu geben.
Üblicherweise werden diese Webseiten dynamisch aufgebaut; im Hintergrund arbeitet eine Anwendung, die auf PHP, Python, Perl oder Java basieren. Meistens ist auch noch eine Datenbank (mysql, postgresql, ...) mit dabei. Dabei laufen all diese Bestandteile üblicherweise auf demselben Server, daß man eigentlich nicht mehr von einem reinen Webserver reden kann, sondern eher von einer Kombination aus Webserver, Applikationserver und Datenbankserver. Daher muss man bei der Dimensionierung und Leistungsbewertung auch diese Komponenten berücksichtigen.
Parameter
Im folgenden eine kurze Übersicht über die Hardware Parameter, die für die 3 oben genannten Bereiche relevant sind.
- CPU-Leistung: Ein reiner Webserver benötigt nur recht wenig CPU. Mit einer Gigahertz-CPU kann man 100 mbit problemlos saturieren. Die CPU wird allerdings von den Anwendungen schon erheblich mehr gestresst, da die Ausführung der Programme verglichen mit der Arbeit des Webservers erheblich komplexer und zeitaufwendiger ist. Auch eine Datenbank kann, wenn sie nicht ständig auf die Festplatte warten muss, ziemlich viel CPU verbrauchen. Im Übrigen ist es egal, ob AMD- oder Intel-CPUs verbaut ist, im Serverbetrieb nivellieren sich die Unterschiede sehr stark.
- RAM: Die Faustregel gilt: Viel hilft viel. Insbesondere wenn man grosse Datenbanken hat. Ein Webserver mit vielen Daten profitiert natürlich auch, wenn er diese Daten im Speicher cachen kann.
- Festplatte: Die Festplattengrösse sollte den Anforderungen angemessen sein. Die Geschwindigkeit selbst sollte ausser für Datenbanken selbst keine grosse Rolle spielen dürfen, im Normalfall sollten die Betriebssystem-Caches das abfedern. Wenn für den normalen Betrieb (also nicht speziell für Datenbanken) die Festplattengeschwindigkeit eine wichtige Rolle spielt, sollte man sich überlegen, ob man erstmal in mehr RAM investiert.
Daraus lassen sich folgende Schlüsse ziehen:
- Für einen reinen Download-Server (also ohne PHP und Datenbank) reicht beinahe jeder Maschine, solange mindestens 128 MB RAM drinstecken und die Festplattengrösse ausreicht.
- Sobald Anwendungen mit ins Spiel kommen (PHP und Konsorten), werden die Anforderungen an die CPU grösser. Natürlich kommt der exakte Bedarf auf die Anwendung an, allerdings ist man mit einer schnellen Einkern-CPU hier erstmal auf der sicheren Seite. Zusätzlichen RAM sollte man auch haben, mit einem halben Gigabyte kommt man auch hier erstmal weit (so man denn keine Anwendung am laufen hat, die selbst schonmal ein komplettes Gigabyte benutzen will).
- Kommt eine Datenbank mit ins Spiel, steigt der RAM-Bedarf an: Als Faustregel kann man annehmen, daß versuchen sollte, die Datenbanken im RAM zu behalten; als Anhaltspunkt kann man die Grösse der Dateien benutzen, in denen die Datenbanken liegen (Vorsicht bei mysql: InnoDB benutzt Tablespaces, die Dateien sind also oftmals grösser als die vorhandene Datenmenge). Die zusätzliche CPU-Last hängt von der Menge und Komplexität der Datenbank-Anfragen ab.
Eine schnelle Festplatte macht für Datenbanken immer Sinn, auch wenn die Daten selbst ins RAM passt.
RAID oder kein RAID
Für RAID gibt es genau 2 Einsatzzwecke: Geschwindigkeitsverbesserung oder Verbesserung der Verfügbarkeit. RAID ist kein Backup.
- Geschwindigkeit: Je mehr Festplattenköpfe unterwegs sind, desto schneller können Anfragen bearbeitet werden. Üblicherweise RAID 1 oder RAID 1+0. Sinnvoll nur bei Systemen, bei denen sehr viele Platten-Anfragen abgesetzt werden (Seeks), meist Datenbanksysteme. Hat ein ziemlich ungünstiges Verhältniss Brutto/Netto-Kapazität (50%).
- Verfügbarkeit: Das System soll den Ausfall einer Festplatte verkraften, ohne daß das System deswegen ausfällt. Üblicherweise RAID 1 (wenn man nur 2 Festplatten hat) oder RAID 5 (bei 3 oder mehr Festplatten). Das Verhältniss Brutto- zu Netto-Kapazität ist bei RAID 5 erheblich besser (Brutto/Brutto-1), dafür sind die Schreiboperationen erheblich langsamer.
Eine Beispiel-Dimensionierungen
Eine reiner Webserver: Ich betreibe eine Reihe von großen Websites, bei denen als Frontends 2 Maschinen mit jeweils 2 CPUs (1 Ghz) und 4G RAM als reiner Cache eingesetzt werden (mit pro Maschine 3 Instanzen eines Apache 2.0.59) und einem Loadbalancer davor. Tagsüber haben diese Maschinen eine Load von etwas über 1 (meist wegen IO, die CPU tun meistens nichts) und sie schieben im Monat knapp 5 TB ins Internet (im Peak ca 16000 requests pro Minute und Maschine). Die Daten (die kommen über ein aufgebohrtes mod_proxy auf diese Maschinen) liegen auf den Systemplatten (2x73G im RAID 1). Der RAM wird grösstenteils als Cache für die knapp 50 GB Content genutzt.
Last edited by a moderator: