Manual:$wgShellCgroup/cs

Pod Linuxem: Adresář cgroup používaný k omezení využití paměti příkazy shellu. Adresář musí být zapisovatelný pro uživatele, který spouští MediaWiki.

Je-li zadáno, použije se místo ulimit, což je nepřesné, a způsobí, že malloc vrátí hodnotu NULL, což odhalí chyby v aplikacích C a způsobí jejich segfault nebo uváznutí.

Obalový skript vytvoří cgroup pro každý spuštěný příkaz shellu jako podskupinu zadané cgroup. Pokud je limit paměti překročen, jádro pošle signál SIGKILL procesu v podskupině. (MediaWiki často hlásí tuto chybu jako chybový kód 137 po návratu bash příkazu přijímajícího SIGKILL)



Nastavení
Pokud cgroups nejsou nastaveny, možná budete muset připojit souborový systém cgroup. Jako root:

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

Dále musíte provést specifickou konfiguraci MediaWiki:

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

Spolehlivost čištění cgroup lze zlepšit instalací skriptu notify_on_release do kořenové cgroup (Tento krok je volitelný).


 * Zkopírujte do /usr/local/bin/cgroup-mediawiki-clean
 * Spusťte příkaz

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

Nakonec povolte cgroups ve vašem

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

Spolehlivost vyčištění cgroup lze zlepšit instalací skriptu notify_on_release do kořenové cgroup, viz např. 40784

Řešení problémů
Pokud cgroups nefungují, zkuste to:


 * Nainstalujte balíček cgroup-bin
 * Spusťte příkaz . Pokud má paměťový subsystém povolenou 0, pak mohou být paměťové cgroups ve vašem jádře zakázány. Zkuste restartovat počítač pomocí příkazu   na příkazovém řádku jádra.
 * Starší bash nemá rád volání readarray v limit.sh. Měli byste použít alespoň 4.1



Související odkazy

 * skript shellu
 * cgroup documentation in the Linux kernel
 * skript shellu
 * cgroup documentation in the Linux kernel
 * cgroup documentation in the Linux kernel
 * cgroup documentation in the Linux kernel