GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit paměť pro službu spravovanou systemd

Manuálová stránka pro systemd.exec obsahuje seznam instrukcí LimitXXXX a praktickou tabulku s jejich porovnáním s ulimit možnosti pomocí setrlimit() systémové volání.

Chcete-li omezit celý adresní prostor procesu (ulimit -v ) použijte LimitAS= . V opačném případě omezíte pouze zásobník (ulimit -s ) použijte LimitSTACK= nebo datový segment (ulimit -d ) použijte LimitDATA=

Podle setrlimit() manpage, tyto limity způsobí selhání alokace další paměti. STACK a AS ukončí program pomocí sigsegv, pokud je dosaženo limitu a zásobník potřebuje růst (a program to nezvládl).


Systemd podporuje omezení využití paměti pomocí možnosti MemoryLimit, jak je popsáno na:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html

Způsob, jakým systém zachází se situací, kdy je vyčerpáno maximum povolené paměti (na službu), závisí jak na základní implementaci cgroups, tak na způsobu, jakým systemd implementuje řízení zdrojů; Hádám, že proces by byl zabit (přes OOM killer).


Pro limity analogické k ulimit:

man systemd.exec

...
LimitAS=(like ulimit -v)
...
LimitRSS=(like ulimit -m)
...

Linux
  1. Jak vytvořit službu Systemd v Linuxu

  2. Jak zvýšit limit paměti PHP

  3. Linux – Omezit využití paměti pro jeden linuxový proces?

  1. Jak napsat spouštěcí skript pro Systemd?

  2. Jak vypsat Systemd Services v Linuxu

  3. Jak nastavit hodnoty ulimit pro službu systemd

  1. CentOS / RHEL 6 :Jak omezit paměťové zdroje pro konkrétního uživatele pomocí cgroups

  2. Jak přesměrovat výstup služby systemd do souboru

  3. Jak zastavit službu systemd