GNU/Linux >> Belajar Linux >  >> Linux

Cara membatasi memori untuk layanan yang dikelola oleh systemd

Halaman manual untuk systemd.exec memiliki daftar instruksi LimitXXXX dan tabel praktis yang membandingkannya dengan ulimit opsi, melalui setrlimit() panggilan sistem.

Untuk membatasi seluruh ruang alamat proses (ulimit -v ) gunakan LimitAS= . Kalau tidak, untuk membatasi hanya tumpukan (ulimit -s ) gunakan LimitSTACK= atau segmen data (ulimit -d ) gunakan LimitDATA=

Menurut setrlimit() halaman manual, batasan ini akan menyebabkan pengalokasian memori tambahan gagal. STACK dan AS akan menghentikan program dengan sigsegv jika batas tercapai dan tumpukan perlu bertambah (dan program tidak menangani ini).


Systemd mendukung pembatasan penggunaan memori melalui opsi MemoryLimit, seperti yang dijelaskan di:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html

Cara sistem menangani situasi ketika memori maksimum yang diizinkan (per layanan) habis tergantung pada implementasi cgroup yang mendasarinya dan cara systemd mengimplementasikan kontrol sumber daya; Saya menduga prosesnya akan dimatikan (melalui pembunuh OOM).


Untuk limit analog dengan ulimit:

man systemd.exec

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

Linux
  1. Cara membuat layanan Systemd di Linux

  2. Cara Meningkatkan Batas Memori PHP

  3. Bagaimana Cara Menulis Script Startup Untuk Systemd?

  1. Bagaimana Pipeline Membatasi Penggunaan Memori?

  2. Cara mengatur nilai ulimit untuk layanan systemd

  3. CentOS / RHEL 6:Cara membatasi sumber daya memori untuk pengguna tertentu menggunakan cgroups

  1. Linux – Batasi Penggunaan Memori Untuk Proses Linux Tunggal?

  2. Bagaimana cara membatasi penggunaan memori aplikasi?

  3. Bagaimana cara mengirim email jika layanan systemd di-restart?