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:


 * Installer le package cgroup-bin
 * Exécuter la commande . Si votre sous-système de mémoire a 0 sous activé, les cgroups mémoire peuvent être désactivés dans votre noyau. Essayez de rallumer votre ordinateur avec   sur la ligne de commande du noyau.
 * L'ancien bash n'aime pas l'appel readarray dans limit.sh. Vous devez utiliser au moins la version 4.1



Voir aussi

 * script shell
 * cgroup documentation in the Linux kernel
 * script shell
 * cgroup documentation in the Linux kernel
 * cgroup documentation in the Linux kernel
 * cgroup documentation in the Linux kernel