Comment limiter la mémoire de tous les processus d'un utilisateur ?

Bonjour,

Comment faites-vous pour limiter la mémoire globale de tous les processus d’un pool PHP-FPM ?

php_admin_value[memory_limit]=XX permet de limité la mémoire un processus et moi je cherche a limité la somme de tous les processus d’un utilisateur (d’un pool PHP-FPM).

J’ai vérifié aussi le prlimit et /etc/security/limits.conf mais ils fonctionnent aussi par processus d’un utilisateur.

Avez-vous une idée comment le faire ?

je ne suis pas certain car je decouvre php-fpm mais apparement c’est pm.max_children et autre children

Merci d’avoir repue, mon problème que tout le PHP-FPM se base sur une limitation de mémoire qui est définie par children, or moi je recherche une limitation globale.
En gros, si j’ai 10 children de 100M ça fait 10*100M=1G de mémoire, or moi je veux dire 100M par children oui, mais pas plus 500M en tous tout en autorisent les 10 children.

Plus généralement, est-il possible de définir sous Debian une limite global de mémoire maximum allouer à tous les processus d’un utilisateur ?

Avec les cgroups, mais ça ne répondra pas à ton souci actuelle.

Il semble que c’est exactement ce que je recherche, par contre je ne sais pas comment assigner automatiquement les processus d’un utilisateur (mon pool du PHP-FPM) a un groupe créé avec cgroups (cgm).

Il y a bien la méthode manuelle (echo pid > /sys/fs/cgroup/memory/groupname/cgroup.procs) mais je recherche quelque chose d’automatiser, avez-vous un outil ou un paramétrage a me proposer ?

Je ne connais pas à ce jour de mécanisme automatique, et pour moi la plus simple en générale est de passé par des micro services limité par l’orchestrateur Kubernetes …

En tout cas bonne lecture car cgroup et namespace sont sur une autre planète informatique à l’instar de selinux …

https://manpages.debian.org/stretch/manpages/cgroups.7.en.html

Par contre une fois la limitation en place comment à ton avis va réagir ton pool si il tape la limite (et là c’est le drame … ça plante ou pas ?, comment le monitorer du coup ?, utilisation de supervisord pour la relance du pool de façon automatique sur un event ?) :pleading_face:

L’automatisation est bien possible avec le couple cgconfigparser et cgrulesengd.

Actuellement le processus du pool PHP-FPM est tous simplement killer et un nouveau démarre automatiquement.