GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo limitar la memoria para un servicio administrado por systemd

La página de manual para systemd.exec tiene una lista de instrucciones LimitXXXX y una tabla útil que las compara con el ulimit opciones, a través del setrlimit() llamada al sistema.

Para limitar todo el espacio de direcciones del proceso (ulimit -v ) usa LimitAS= . De lo contrario, para limitar solo la pila (ulimit -s ) usa LimitSTACK= o segmento de datos (ulimit -d ) usa LimitDATA=

Según el setrlimit() manual, estos límites harán que falle la asignación de memoria adicional. STACK y AS terminarán el programa con un sigsegv si se alcanza el límite y la pila necesita crecer (y el programa no manejó esto).


Systemd admite la limitación del uso de la memoria a través de la opción MemoryLimit, como se describe en:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html

La forma en que el sistema maneja la situación cuando se agota la memoria máxima permitida (por servicio) depende tanto de la implementación subyacente de cgroups como de la forma en que systemd implementa el control de recursos; Supongo que el proceso se eliminaría (a través del asesino OOM).


Para límites análogos a ulimit:

man systemd.exec

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

Linux
  1. Cómo crear un servicio Systemd en Linux

  2. Cómo aumentar el límite de memoria de PHP

  3. ¿Cómo limitan las canalizaciones el uso de memoria?

  4. ¿Cómo cambiar de usuario para un montón de archivos de servicio de Systemd?

  5. Cómo establecer valores ulimit para un servicio systemd

Cómo usar el comando ulimit de Linux

Cómo ejecutar contenedores como servicio Systemd con Podman

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo enumerar los servicios de Systemd en Linux

¿Cómo limitar el uso de la memoria de la aplicación?

Limite el uso de memoria para un solo proceso de Linux