RAM-Verbrauch von Apache2 und MySQL

Felias

New Member
Hallo zusammen,

ich habe mir einen vServer bestellt und eingerichtet. Auf ihm laufen 5 vHosts für unterschiedliche php-Skripte (phpBB, pixelpost, ...), die MySQL hat 2 Datenbanken (phpBB,pixelpost). Der Server hat 128MB RAM garantiert, 256 dynamisch.

Die dort liegenden Seiten werden nur selten frequentiert, die meiste Zeit idlen sie komplett. Das phpBB-Forum hat ~20-30 Zugriffe am Tag, die anderen Seiten maximal einen am Tag.

Wenn ich mir nun die top-Auswertung anschaue, sammeln die apache2 und der mySQL-Prozess kräftig RAM-Ressourcen, und ich bin unsicher ob dies so korrekt ist. Hier die top-Ausgabe:

Code:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
24420 mysql     18   0  125m  19m 5204 S  0.0  7.8   0:03.53 mysqld
24549 www-data  15   0 32776  15m 4028 S  0.0  6.2   0:11.04 apache2
14248 www-data  18   0 31252  14m 4280 S  0.0  5.7   0:06.30 apache2
25631 www-data  15   0 31000  14m 4292 S  0.0  5.6   0:10.94 apache2
14258 www-data  15   0 29936  13m 3980 S  0.0  5.1   0:08.31 apache2
24546 root      18   0 23936 7040 3944 S  0.0  2.7   0:00.74 apache2
17481 root      15   0  6916 4948 1548 S  0.0  1.9   0:04.95 munin-node
25870 root      16   0  8060 2528 2060 S  0.0  1.0   0:00.08 sshd
 7443 root      16   0  8060 2524 2060 S  0.0  1.0   0:00.05 sshd
17768 postfix   15   0  5448 1836 1464 S  0.0  0.7   0:00.04 qmgr
 7508 dada      15   0  3376 1820 1220 S  0.0  0.7   0:00.00 bash
25886 dada      16   0  3376 1816 1220 S  0.0  0.7   0:00.00 bash
17765 root      15   0  5400 1724 1400 S  0.0  0.7   0:00.19 master
25885 dada      15   0  8208 1712 1212 S  0.0  0.7   0:00.75 sshd
 7507 dada      15   0  8212 1708 1212 R  0.0  0.7   0:00.21 sshd
15780 postfix   18   0  5404 1640 1336 S  0.0  0.6   0:00.00 pickup
25898 root      15   0  2916 1628 1236 S  0.0  0.6   0:00.00 bash
 7545 root      15   0  2900 1584 1212 S  0.0  0.6   0:00.00 bash
25896 root      16   0  2448 1068  856 S  0.0  0.4   0:00.00 su
 7530 root      16   0  2452 1068  856 S  0.0  0.4   0:00.00 su
24550 root      16   0  2312 1064  848 S  0.0  0.4   0:04.90 top
15999 root      15   0  2312 1064  852 R  0.0  0.4   0:00.40 top
    1 root      18   0  1908  840  580 S  0.0  0.3   0:00.15 init
20204 root      18   0  2108  812  708 S  0.0  0.3   0:00.56 cron
26516 root      23   0  5320  724  628 S  0.0  0.3   0:00.40 sshd
11771 syslog    18   0  1936  672  528 S  0.0  0.3   0:00.74 syslogd
26407 proftpd   18   0  9936  592  468 S  0.0  0.2   0:00.55 proftpd
24422 root      23   0  1704  552  476 S  0.0  0.2   0:00.00 logger
24377 root      25   0  1776  520  432 S  0.0  0.2   0:00.00 mysqld_safe

Ist dies aus Eurer Sicht normal? Ich habe aktuell eine konstante Auslastung von 170-190MB Ram.
 

Roger Wilco

Blog Benutzer
Deine Fragen wurden alle schon mehrfach in diesem Forum ausführlich diskutiert und beantwortet. Benutze bitte die Suchfunktion.

Und ja, die Anzeige von top ist normal. Du vergisst dabei auch, dass bestimmte Codeteile (z. B. Shared Libraries) von mehreren Prozessen benutzt werden können...
 

Felias

New Member
Hi Roger,

bei einer groben Suche konnte ich keinen wirkliche auf meinen Fall passenden Fall finden. Ich werde aber nochmal tiefer in die Suche einsteigen.

Mich wundert einfach nur, dass bei reinem Idle-Betrieb der Apache knapp 30% und der MySQL knapp 10% von den 256MB Ram verbrauchen.

Grüße,
Felias
 

Roger Wilco

Blog Benutzer
Mich wundert einfach nur, dass bei reinem Idle-Betrieb der Apache knapp 30% und der MySQL knapp 10% von den 256MB Ram verbrauchen.
Gegenfrage: Was bringt es dir, wenn der Apache httpd und MySQL nur einen Bruchteil des Speichers verbrauchen, der Rest ungenutzt ist und du dafür für jede Aktion ewig lange warten musst, weil die Daten erst von der langsamen Festplatte gelesen werden müssen?
 

Felias

New Member
natürlich garnix. Mir war nicht bewußt, dass dies so ist. Nur wenn jetzt eine Entscheidung bezüglich der Erweiterung des RAMS rausfällt, welche auch mit Kosten verbunden ist, dann sollte einem schon klar sein, wieviel RAM jetzt wirklich notwendig ist.

Aber wie gesagt, ich werd mich noch genauer im Forum umschauen.
 

Felias

New Member
Vielen Dank für Eure Tipps. Lighttp werde ich mich sicher einmal näher anschauen. Und das Tutorial werde ich gleich einmal prüfen :)
 

Roger Wilco

Blog Benutzer
Hier eine kleines Howto für die Optimierung von Apache und mySQL bei wenig RAM (für vServer) -> Low memory MySQL / Apache configurations - VPSLink Wiki
Naja, die MySQL-Konfiguration ist nicht unbedingt optimal. Weder für den Benutzer einer einzelnen VPS, noch für alle gemeinsam. Je kleiner die Puffer eingestellt werden, desto öfter müssen Daten direkt von der Festplatte gelesen werden. Und das ist langsam und wird vor allem viel, viel langsamer, je mehr Benutzer das machen. I/O Last lässt sich eben schlecht virtualisieren...
Der beste Tipp davon ist noch, die Berkeley DB und InnoDB Engines zu deaktivieren.
 

Felias

New Member
Naja, die MySQL-Konfiguration ist nicht unbedingt optimal. Weder für den Benutzer einer einzelnen VPS, noch für alle gemeinsam. Je kleiner die Puffer eingestellt werden, desto öfter müssen Daten direkt von der Festplatte gelesen werden. Und das ist langsam und wird vor allem viel, viel langsamer, je mehr Benutzer das machen. I/O Last lässt sich eben schlecht virtualisieren...
Der beste Tipp davon ist noch, die Berkeley DB und InnoDB Engines zu deaktivieren.

Dachte ich mir auch, daher habe ich die Puffer auch nur in kleinerem Rahmen verringert. Auf jeden Fall konnte ich jetzt anhand der Guides und noch einigem Nachlesen im Netz die RAM-Auslastung auf 100MB runterbekommen, womit ich mich deutlicher wohl fühle.

Danke + Grüße,
Felias
 
Top