Problem:
Bei manchen virtuellen Servern steht die Speicherauslastung im roten Bereich (<code>privvmpagescode> in <code>/proc/user_beancounterscode>) ohne daß viel Betrieb auf dem Server besteht.
Lösung:
Den meisten Speicher verbrauchen meist der Webserver Apache2 und die Datenbank MySQL. Zusätzlich sollte man schauen, daß man auch nur die Dienste laufen, die man wirklich braucht.
Apache:
In der Datei <code>/etc/apache2/server-tuning.confcode> die Angaben unter <code>prefork MPMcode> ändern:
StartServers 1
MinSpareServers 1
MaxSpareServers 3
Wir prüfen zusätzlich die benötigten Apache-Module: In <code>/etc/sysconfig/apache2code> suchen wir die Variable <code>APACHE_MODULEScode>. Viele voreingestellte Module werden meist nicht gebraucht. Zum Beispiel:
- auth_dbm (HTTP-Auth über Berkley-DB)
- autoindex (Directory-Index
- expires (Expires-Header)
- frontpage (Frontpage-Extension (Wer arbeitet denn mit Frontpage?))
- include (SSI)
- negotiation (länderspezifischer Content)
- perl (mod-Perl hat nix mit CGI zu tun!)
- rewrite (URL-Rewrite/-Weiterleitungen)
- speling (erraten von fehlerhaften URL's)
- status (Status-Abfrage der aktuellen Threads: Performance-Fresser)
- userdir (URL's der Form <code>/~user/code>)
MySQL:
In der Datei <code>/etc/my.cnfcode> die Sektion <code>[mysqld]code> finden und die Parameter ändern/ergänzen:
key_buffer = 2M
myisam_sort_buffer_size = 4M
read_buffer_size = 512K
read_rnd_buffer_size = 4M
SpamAssassin:
Jede eingebundene Regel kostet Speicher und Performance. Hier gilt es die richtigen Regeln zu deaktivieren.
Plesk:
Siehe Plesk: Speicher optimieren
Dienste / Server / Daemon:
Ein typischer Dienst der installiert und gestartet ist, obwohl man ihn gar nicht braucht ist der Nameserver (<code>bindcode> bzw. <code>namedcode>).
Weitere Kandidaten sind z.B. neben <code>MySQLcode> ein zweiter Datenbank-Server: <code>postgresqlcode> oder ein Port-Wächter (<code>portmapcode>) oder gar <code>Webmincode> selbst.