Manual:$wgShellCgroup/fr

Sous Linux: un répertoire cgroup utilisé pour restreindre l'usage de mémoire des commandes shell.

Le répertoire doit être modifiable par l'utilisateur qui contrôle MédiaWiki.

Si spécifié, ceci est utilisé à la place de ulimit, qui n'est pas précis, et fait que malloc retourne NULL, ce qui montre des bugs dans les applications C, les faisant dysfonctionner ou se bloquer.

Un script de lancement créera un cgroup pour chaque commande shell exécutée, comme un sous-groupe du cgroupe spéficié. Si la limite de mémoire est dépassée, le noyau va envoyer un signal SIGKILL à un processus dans le sous-groupe. (MédiaWiki va souvent reporter cette erreur comme une erreur 137, d'après le statut de retour bash d'une commande recevant SIGKILL)



Configurer
Si les cgroupes ne sont pas définis, vous devriez peut-être monter le système de fichiers cgroup. En tant que root :

mount -t tmpfs cgroup_root /sys/fs/cgroup mkdir /sys/fs/cgroup/memory mount -t cgroup cgroup_memory -omemory /sys/fs/cgroup/memory

Ensuite vous devez faire la configuration spécifique de MédiaWiki:

mkdir -p /sys/fs/cgroup/memory/mediawiki mkdir -m 0777 /sys/fs/cgroup/memory/mediawiki/job

La fiabilité du nettoyage de cgroup peut être améliorée en installant un script de notify_on_release dans le cgroup racine (Cette étape est optionnelle).


 * Copy to /usr/local/bin/cgroup-mediawiki-clean
 * Exécuter la commande

echo "/usr/local/bin/cgroup-mediawiki-clean" > /sys/fs/cgroup/memory/release_agent

Pour finir, activez les cgroupes dans vos.

echo '$wgShellCgroup = "/sys/fs/cgroup/memory/mediawiki/job";' >> LocalSettings.php

La fiabilité du nettoyage de cgroup peut être améliorée en installant un script de notify_on_release dans le cgroup racine, voir e.g. 40784.

Résolution des problèmes
Si les cgroupes ne marchent pas, voici les choses à essayer:

If the memory subsystem has a 0 under enabled, then memory cgroups may be disabled in your kernel. Try rebooting your computer with  on the kernel command line. Vous devez utiliser au moins la version 4.1
 * Installer le package cgroup-bin
 * Run the command.
 * Older bash doesn't like the readarray call in limit.sh.



Voir aussi

 * shell script
 * cgroup documentation in the Linux kernel