[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Content Management System für private Homepage?



Am Sunday 30 January 2011 schrieb Christian Stubbs:
> Hagen Montag <hagk@hagk.de> writes:
> > Christian Stubbs wrote:
> >> Als kleine Variante vom root-Server gibts noch die vServer. Apache
> >> tauglich mit 1GB ram rund 10EUR. Wenn man weniger ausgeben will und
> >> weniger RAM hat, muss man kräftig am Apache tunen oder auf lighttpd
> >> wechseln. Kommt auch auf die Last an.
> > 
> > Dieser Apache muss ja echt schlechte Software sein, wenn der nicht
> > mal auf einem vServer mit 128Mb läuft.
> > 
> > Und ich dachte immer, der RAM-verbrauch liegt an den PHP-framworks,
> > den JVM's und Datenbanken, die man so für dynamische websites
> > braucht.
> 
> Du hast recht.
> 
> Bei Apache landet man halt meistens erstmal bei mpm-prefork mit
> mod-php. Die entsprechenden Pakete werden in den meisten Guides zu
> LAMP empfohlen und ich vermute, dass man die auch installiert kriegt,
> wenn man tasksel benutzt.  Und das ist ein Speichermonster, weil für
> jede Connection eine Instanz mit dem ganzen php-Geraffel gebraucht
> wird. Das sind dann locker über 20MB pro Connection.

Wie hast Du das gemessen? Die Ausgaben von ps aux sagen wenig über den 
effektiven Speicherverbrauch des Prozesses aus.

> Ich habs oben abgekürzt mit "kräftig tunen". Damit meinte ich, dass man
> das auf mpm-worker mit php über fcgid umstellen kann. Vermutlich ist
> dir die Prozedur aber bekannt.

Okay, meine heftig veraltete Webseite ist wahrscheinlich nicht der Traffic-
Generator schlechthin - obwohl sie laut Google, als ich das letzte Mal 
schaute, einen Pagerank von 5 auf der Startseite und einen von 4 auf 
übrigen Seiten hatte, aber da ich bislang kein Statistik-Tool eingerichtet 
habe... -, aber ich versende auch mpm-prefork und ein bißchen selbst 
gebasteltes PHP: Ich komme nicht einmal annäherend in den Bereich, 1 GB 
für den Apache zu brauchen.

mondschein:~> free -m
             total       used       free     shared    buffers     cached
Mem:           248        238         10          0         35        104
-/+ buffers/cache:         98        150
Swap:            0          0          0

Das sind 98 - in Worten achtundneunzig - MByte für Apache, Dovecot, 
Postfix, Mailman, policyd-weightd... ja, der Wert in der zweiten Zeile in 
der Spalte "used" ist der richtige ;). Der Maschine bleibt also noch 
bequem viel Platz fürs Caching - das sollte auch so sein! Und das 
zusätzlich mit LVM und über 5 logischen Laufwerken, d.h. Ext4-
Dateisystemen.

Es laufen

mondschein:~> ps aux | grep apache | grep www-data | wc -l
10

Apache-Prozesse, die Anfragen beantworten. Was wohl locker reicht, um den 
geringen Traffic auf die Seite abzubilden. Apache verwendet diese Prozesse 
wieder, er forkt also nicht für jede Verbindungsanfrage einen neuen 
Prozess. Das heißt viel interessanter als die Zahl der Zugriffe über einen 
gewissen Zeitraum ist die Zahl der *gleichzeitigen* Zugriffe.

Und dann schaue ich mal, ob einer der Apaches wirklich 20 MB verbraucht:

mondschein:~> for P in $(pidof apache2); do pmap -d $P | tail -1 ; done 
mapped: 22476K    writeable/private: 4820K    shared: 568K
mapped: 22764K    writeable/private: 5108K    shared: 568K
mapped: 22796K    writeable/private: 5140K    shared: 568K
mapped: 22828K    writeable/private: 5172K    shared: 568K
mapped: 23088K    writeable/private: 5432K    shared: 568K
mapped: 23056K    writeable/private: 5400K    shared: 568K
mapped: 22992K    writeable/private: 5336K    shared: 568K
mapped: 23080K    writeable/private: 5424K    shared: 568K
mapped: 22828K    writeable/private: 5172K    shared: 568K
mapped: 23088K    writeable/private: 5432K    shared: 568K
mapped: 22344K    writeable/private: 4688K    shared: 568K

Also kommt mal keiner der Apache-Prozesse auf mehr als gute 5 MB privat 
genutzten Adreßraum. Und ob er den wirklich komplett nutzt, ist auch nicht 
mal sicher. Den gemeinsamen genutzten Speicher würde ich fairerweise durch 
die Anzahl der Prozesse teilen, doch da fängts dann schon an: So eine libc 
verwenden auch Postfix, Dovecot, perl mit policy-weightd, Python mit 
Mailman und was da sonst noch auf meinem Server vor sich hin werkelt.

Jetzt mal grob hochgerechnet mit den etwa 5 MB pro Apache-Prozesse, könnte 
diese Maschine wahrscheinlich noch locker 15 weitere Apache-Prozesse für 
insgesamt ca. 75 MB starten, ohne über Gebühr auslagern zu müssen. Das 
heißt 25 Benutzer können sich gleichzeitig auf meinem Server austoben, 
ohne dass es ein Problem mit der Speicherauslastung gibt. Und wie gesagt, 
das alles unter der Annahme, dass jeder dieser Apache-Prozesse die 5 MB 
angeforderten Adreßraum auch nutzt.

Also bitte Obacht mit voreiligen Aussagen über den Speicherverbrauch von 
Prozessen. Denn diese sind meiner Erfahrung nach fast immer *grob* falsch. 
Es braucht schon einiges an Fachwissen und Aufwand, um den 
Speichervebrauch eines Prozesses genau zu ermitteln.

Meine Erfahrungswerte sind: Für einen einfachen PHP-Webserver mit etwas 
Mail reichen 256 MB mal locker aus. Wie das aussieht, wenn ein Datenbank-
Server ins Spiel kommt und ein mehr oder weniger aufwendiges CMS, ist 
nochmal eine andere Sache, aber ich würde mich schwer wundern, wenn mehr 
als 384 oder 512 MB erforderlich sind. Es sei denn, Slashdot verlinkt auf 
eine URL auf dem Server ;). Bei 512 MB dürften selbst 50-100 gleichzeitige 
Anfragen kein Problem darstellen, auch wenn ein einigermaßen gescheites 
CMS zum Einsatz kommt.

Und um gezieltes Stellen von mehr Anfragen zu unterbinden, als für 
gewöhnliches Surfen erforderlich sind, etwa für Brute Force-Attacken, 
gibts auch Möglichkeiten wie mod-evasive oder mod-security.

Zum Schluß empfehle ich folgende kleine Übung für zu Hause:

Führe auf einem frisch gestarteten System, meinetwegen mit twm als Window-
Manager, um nicht viel vorab zu laden, folgende Schritte aus:

- free -m
- iceweasel &
- pmap -d <PID von Iceweasel> | tail -1
- free -m

Vergleiche dann mal den angeforderten Adreßraum mit dem tatsächlichen 
Speicherverbrauch und staune! Ein anderer Kandidat dafür: OpenOffice.org, 
wahrscheinlich auch LibreOffice.org. Konqueror und andere KDE-Anwendungen 
sind hingegen viel genügsamer mit dem Adreßraum. Iceweasel und 
OpenOffice.org allozieren indes Adreßraum, als ob es den bei Aldi im 
Sonderangebot gäbe - was zumindest für 64-Bit-Systeme ja auch stimmt.

(Jow, da hab ich mich mal wieder provozieren lassen und einen kleinen 
inhaltlichen Aspekt aus dem Linux Performance Tuning Kurs, den ich halte, 
weitervermittelt.)

Ciao,
-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: