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
If cgroups are not set up, you may have to mount the cgroup filesystem. 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

Next you need to do MediaWiki specific configuration:

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

The reliability of cgroup cleanup can be improved by installing a notify_on_release script in the root cgroup (This step is optional).


 * 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

Last of all, enable cgroups in your

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

The reliability of cgroup cleanup can be improved by installing a notify_on_release script in the root cgroup, see e.g. 40784

Résolution des problèmes
If cgroups don't work, things to try:

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
 * Install cgroup-bin package
 * Run the command.
 * Older bash doesn't like the readarray call in limit.sh.



Voir aussi

 * shell script
 * cgroup documentation in the Linux kernel