Jump to content

Kézikönyv:$wgShellCgroup

From mediawiki.org
This page is a translated version of the page Manual:$wgShellCgroup and the translation is 100% complete.
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

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).

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 a cgroup_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.

Lásd még