Problem:
Bei manchen virtuellen Servern steht die Speicherauslastung im roten Bereich (privvmpages
in /proc/user_beancounters
) 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 /etc/apache2/server-tuning.conf
die Angaben unter prefork MPM
ändern:
StartServers 1
MinSpareServers 1
MaxSpareServers 3
Wir prüfen zusätzlich die benötigten Apache-Module: In /etc/sysconfig/apache2
suchen wir die Variable APACHE_MODULES
. Viele voreingestellte Module werden meist nicht gebraucht. Zum Beispiel:
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_auth.html">auth_dbm (HTTP-Auth über Berkley-DB)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html">autoindex (Directory-Index
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html">expires (Expires-Header)
- frontpage (Frontpage-Extension (Wer arbeitet denn mit Frontpage?))
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_include.html">include (SSI)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html">negotiation (länderspezifischer Content)
- perl (mod-Perl hat nix mit CGI zu tun!)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">rewrite (URL-Rewrite/-Weiterleitungen)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_speling.html">speling (erraten von fehlerhaften URL's)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_status.html">status (Status-Abfrage der aktuellen Threads: Performance-Fresser)
- target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_userdir.html">userdir (URL's der Form
/~user/
)
MySQL:
In der Datei /etc/my.cnf
die Sektion [mysqld]
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 (bind
bzw. named
).
Weitere Kandidaten sind z.B. neben MySQL
ein zweiter Datenbank-Server: postgresql
oder ein Port-Wächter (portmap
) oder gar Webmin
selbst.