Linux RAM Tuning

Aus Andor2Wiki
Wechseln zu: Navigation, Suche

Aufgrund akuter RAM Probleme mussten diverse Parameter der laufenden Dienste auf einen niedrigeren RAM-Verbraucht optimiert werden. Dies wird in diesem Artikel zusammengetragen.

Apache

Folgende Einstellungen in /etc/httpd/conf/httpd.conf reduzieren die Anzahl der Apache Prozesse.

<IfModule prefork.c>
StartServers         1
MinSpareServers      1
MaxSpareServers      3
ServerLimit          20
MaxClients           20
MaxRequestsPerChild  200
</IfModule>

Dadurch wird nur ein Child-Prozess gestartet und als Minimum aktiv gehalten, maximal 3 Spare Prozesse im Leerlauf behalten und maximal 20 httpd Prozesse parallel gestartet. Außerdem wird ein Prozess nach 200 Requests neu erzeugt, sodass memory leaks abgefangen werden.

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Weiterhin wurde die KeepAlive Funktion aktiviert, sodass innerhalb con 5 Sekunden keine neue Connection für den gleichen Client für weitere Anfragen generiert werden muss.

Desweiteren wurden noch diverse Apache-Module auskommentiert um RAM zu sparen, wobei das hier immer noch eine recht vorsichtige Konfiguration ist.

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so


Amavisd

Die Anzahl der Mailfilter-Prozesse wurde in /etc/amavisd/amavisd.conf ebenfalls verringert.

$max_servers = 1;

Anschließend muss noch die postfix Konfiguration in /etc/postfix/master.cf angepasst werden.

smtp-amavis unix -      -       n       -       1       smtp

Postfix

Damit verseuchte Clients oder Bots nicht den Mailserver mit Anfragen überfluten und unnötig viele smtpd Prozesse erzeugen können, habe ich folgende Einstellungen in der /etc/postfix/Master.cf vorgenommen.

   -o smtpd_soft_error_limit=10
   -o smtpd_hard_error_limit=20
   -o smtpd_client_connection_count_limit=30
   -o smtpd_client_connection_rate_limit=0

Dadurch wird das Beantworten von Anfragen für eine IP nach 10 Fehlern verzögert, nach 20 Fehlern abgebrochen und auf insgesamt 30 gleichzeitige connections begrenzt.