Что в действительности контролирует $wgMaxShellMemory в MediaWiki?

Мой главный вопрос: ограничивает ли wgMaxShellMemory общий объем памяти, используемый всеми процессами для задач оболочки, таких как создание эскизов ImageMagick? Или это скорее ограничение на процесс? Документация для этого параметра кажется расплывчатой.

У меня есть вики, которая использует слишком много памяти на общем хосте. Я сузил виновника до ImageMagick, используя слишком много памяти при преобразовании загруженных изображений. Я уменьшил максимальный размер загрузки в php.ini, что поможет, но я надеялся, что wgMaxShellMemory послужит жестким ограничением общего использования памяти ImageMagick и другими фоновыми процессами MediaWiki.

В качестве идентификатора я также не смог выяснить из документации, является ли преобразование изображений частью очереди заданий, что позволило wgJobRunRate замедлить создание миниатюр.

1 ответ

Во-первых, ограничение памяти относится только к GNU/Linux, но не к Windows.

Краткий ответ: это ограничение для каждого сценария bash, которое, вероятно, (это верно для "своих" дочерних систем, и в других случаях это ограничение не очень эффективно) также применяется к дочерним процессам. Таким образом, каждый вызов ImageMagick получает свой отдельный лимит.

Создание миниатюр для изображений не является частью очереди заданий (мультимедиа, такие как видео, это другой вопрос).


Подробности:

По умолчанию это работает так:

  1. Когда вызывается wfShellExec, он создает новый процесс bash с proc_open.
  2. Это запускает скрипт bash с именем limit.sh.
  3. Этот новый процесс bash устанавливает предел памяти (wgMaxShellMemory), используя ulimit -v,
  4. Затем процесс bash запускает желаемую команду с помощью /usr/bin/timeout (если есть также предел настенных часов) или eval.

Страница man для bash ulimit гласит: "-v" - это "Максимальный объем виртуальной памяти, доступной оболочке и, в некоторых системах, ее дочерним элементам".

ПРИМЕЧАНИЕ. Существует возможность использовать cgroups, но по умолчанию она отключена.

Другие вопросы по тегам