Мой главный вопрос: ограничивает ли wgMaxShellMemory общую память, используемую всеми процессами для задач оболочки, таких как создание миниатюр ImageMagick? Или это скорее ограничение на процесс? Документация по этому параметру кажется расплывчатой.
У меня есть вики, которая использует слишком много памяти на общем хосте. Я сузил причину до ImageMagick, использующего слишком много памяти при преобразовании загруженных изображений. Я уменьшил максимальный размер загрузки в php.ini, что поможет, но я надеялся, что wgMaxShellMemory послужит жестким ограничением для общего использования памяти ImageMagick и другими фоновыми процессами MediaWiki.
Кстати, я также не мог понять из документации, является ли преобразование изображений частью очереди заданий, что позволяет wgJobRunRate замедлить создание миниатюр.
Во-первых, ограничение памяти применяется только к GNU / Linux, а не, например. Windows.
Краткий ответ: это ограничение для каждого процесса для сценария bash, которое, вероятно (это верно для «его дочерних» систем, и в противном случае ограничение мало используется) также применимо к дочерним процессам. Таким образом, каждый вызов ImageMagick имеет свой отдельный лимит.
Создание миниатюр для изображений не входит в очередь заданий (другое дело - мультимедиа, например видео).
Подробности:
По умолчанию это работает так:
ulimit -v
.Страница руководства для ulimit bash говорит '-v': «Максимальный объем виртуальной памяти, доступной оболочке, а в некоторых системах - ее дочерним компонентам».
ПРИМЕЧАНИЕ: есть опция использовать cgroups, но по умолчанию он выключен.