Speicher-Verbrauch von Linux-Diensten mittels systemd limitieren

systemd apache2.service Konfiguration

Linux-Dienste lassen sich seit Umstellung auf systemd mittels weniger (generischer) Konfigurationsanpassungen in den maximal nutzbaren Ressourcen (Memory, CPU, IO, …) limitieren. Möglich wird dies mittels cgroups. Nachfolgend sei dies am Beispiel einer Hauptspeicher-Limitierung des Apache-Dienstes auf einem Ubuntu 16.04 LTS System kurz demonstriert:

Das Apache2 Service erwartet seine systemd-Konfiguration(en) unter dem Namen “apache2.service”, dies ermitteln wir wie folgt:

root@nc:~# systemctl list-units --type=service --all | grep -i Apache
apache2.service loaded active running LSB: Apache2 web server

Wir legen daher ein Verzeichnis mit nachfolgendem Namen an (Achtung: das “.d” am Ende des Verzeichnis-Namens beachten), und darin eine Konfigurationsdatei mit beliebigem Namen und Datei-Endung “.conf” in welchem wir das gewünschte Memory-Limit konfigurieren:

mkdir /etc/systemd/system/apache2.service.d
vi /etc/systemd/system/apache2.service.d/limits.conf
[Service]
MemoryLimit=1100M
Restart=on-failure
RestartSec=42

Die soeben erstellte Konfigurationsdatei lassen wir nun vom systemd neu einlesen und starten den Dienst Apache neu:

systemctl daemon-reload
systemctl restart apache2

Eine Status-Abfrage zeigt nun folgende Veränderung:

root@nc:~# systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
          └─apache2-systemd.conf
        /etc/systemd/system/apache2.service.d
        └─limits.conf
Active: active (running) since Di 2018-05-22 19:08:57 CEST; 2h 16min ago
Docs: man:systemd-sysv-generator(8)
Process: 26721 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 26747 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 11
Memory: 240.3M (limit: 1.0G)
...

Das erstellte Konfigurations-AddOn in Form der limits.conf wurde verarbeitet, das Memory-Limit ist wirksam. Weitere konfigurierbare Limits findet man in den systemd-Manpages.

systemd apache2.service Konfiguration
systemd apache2.service Konfiguration

You May Also Like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.