Kézikönyv:$wgShellCgroup
Shell and process control: $wgShellCgroup | |
---|---|
A shell-parancsok memóriahasználatának korlátozása cgroupok segítségével. |
|
Bevezetve: | 1.21.0 (Gerrit change 47559; git #674962b3) |
Eltávolítva: | használatban |
Megengedett értékek: | (sztring) |
Alapértelmezett érték: | false |
Egyéb beállítások: Betűrendben | Funkció szerint |
Linux alatt a cgroup könyvtárak a shell-parancsok memóriahasználatának korlátozására használatosak. A mappának a MediaWikit futtató felhasználó által írhatónak kell lennie.
A változó beállítása esetén ez lesz használatban az ulimit helyett; ez utóbbi hatására a malloc() visszatérési értéke NULL, amely C alkalmazásokban problémákat (jogosulatlan hozzáférés vagy holtpont) okozhat.
Egy burkolószkript minden futtatott shell-parancshoz létrehoz egy a meghatározott cgroup alcsoportját képező cgroupot. Memóriatúllépés esetén az alcsoport folyamatának a kernel SIGKILL parancsot küld. (A MediaWiki a SIGKILL-t gyakran 137-es hibaként jelzi.)
Beállítás
Ha a cgroupok nincsenek beállítva, szükség lehet a cgroup-fájlrendszer felcsatolása. Rootként:
mount -t tmpfs cgroup_root /sys/fs/cgroup mkdir /sys/fs/cgroup/memory mount -t cgroup cgroup_memory -omemory /sys/fs/cgroup/memory
Következő lépésben a MediaWiki-specifikus beállítást kell elvégezned:
mkdir -p /sys/fs/cgroup/memory/mediawiki mkdir -m 0777 /sys/fs/cgroup/memory/mediawiki/job
A cgroup-tisztítás megbízhatósága a root cgroupban telepíthető notify_on_release szkripttel növelhető (opcionális).
- Másold a modules/mediawiki/files/cgroup/cgroup-mediawiki-clean from operations/puppet.git-et a /usr/local/bin/cgroup-mediawiki-clean helyre.
- Futtasd a parancsot
echo "/usr/local/bin/cgroup-mediawiki-clean" > /sys/fs/cgroup/memory/release_agent
Végül engedélyezd a cgroupokat a LocalSettings.php -ben
echo '$wgShellCgroup = "/sys/fs/cgroup/memory/mediawiki/job";' >> LocalSettings.php
A cgroup-tisztítás megbízhatósága a root cgroupban telepíthető notify_on_release szkripttel növelhető; például: gerrit:40784
Hibakeresés
Ha a cgroupok nem működnek, próbáld meg a következőket:
- A cgroup-bin csomag telepítése
- A
cat /proc/cgroups
parancs futtatása. Ha a memória-alrendszer engedélyezett listájában nullát látsz, a memória cgroupjai esetleg le vannak tiltva a kernelben. Próbáld meg újraindítani a számítógépet, miközben elhelyezed a kernel-parancssorban acgroup_enable=memory swapaccount=1
sort. - A korábbi terminálverziókban probléma lehet a limit.sh-ban szereplő olvashatótömb-meghívás. Használd legalább a 4.1 verziót.