Вопрос или проблема
Итак, я пытаюсь установить Mautic на shared hosting (Debian GNU/Linux 11), но когда я пытаюсь запустить composer create-project mautic/recommended-project:^5 newsletter --no-interaction
, процесс установки завершает работу с ошибкой, когда выполняется npm:
> npm ci --prefer-offline --no-audit
#
# Фатальная ошибка - недостаточно памяти: Зона
#
----- Обратный след нативного стека -----
<--- Последние несколько сборок мусора --->
[3932986:0x65b1000] 156 ms: Сборка мусора 8.7 (11.5) -> 7.6 (12.2) МБ, выделено: 0 МБ, 1.53 / 0.00 ms (среднее mu = 1.000, текущее mu = 1.000) ошибка выделения;
[3932986:0x65b1000] 239 ms: Сборка мусора 9.2 (12.2) -> 8.1 (12.7) МБ, выделено: 0 МБ, 1.56 / 0.00 ms (среднее mu = 1.000, текущее mu = 1.000) ошибка выделения;
[3932986:0x65b1000] 271 ms: Сборка мусора 10.2 (12.7) -> 9.0 (13.5) МБ, выделено: 2 МБ, 1.75 / 0.00 ms (среднее mu = 1.000, текущее mu = 1.000) ошибка выделения;
<--- JS стек ошибки --->
ФАТАЛЬНАЯ ОШИБКА: Ошибка выделения в зоне - недостаточно памяти
----- Обратный след нативного стека -----
Вызвано завершение после вызова экземпляра 'St9bad_alloc'
что(): std::bad_alloc
Прервано
Скрипт npm ci --prefer-offline --no-audit, обрабатывающий событие npm-ci, вернулся с кодом ошибки 134
Скрипт @npm-ci был вызван через post-update-cmd
Как я могу увеличить количество памяти без доступа к root на короткое время, необходимое для запуска установки?
npm -v = 10.9.0, node -v = v22.11.0
free -m
возвращает:
всего использовано свободно разделено буфер/кэш доступно
Память: 192061 44893 5549 31856 141618 114710
Swap: 263 263 0
Ответ или решение
Установка Mautic завершилась неудачей из-за недостатка памяти для выполнения команды npm, что приводит к ошибке, связанной с исчерпанием ресурсов памяти на вашем сервере. Давайте рассмотрим проблему более подробно.
Проблема
Вы пытаетесь установить Mautic на совместном хостинге под управлением Debian GNU/Linux 11 с помощью команды:
composer create-project mautic/recommended-project:^5 newsletter --no-interaction
Во время выполнения установки возникает ошибка при попытке выполнения npm ci --prefer-offline --no-audit
, в результате чего вы получаете сообщение об исчерпании памяти:
FATAL ERROR: Zone Allocation failed - process out of memory
Анализ
Из вывода команды free -m
видно, что ваша система имеет 192061 МБ оперативной памяти, из которых 44893 МБ используются, а 141618 МБ свободны. На первый взгляд, объема памяти должно быть достаточно, но стоит учитывать, что на совместном хостинге ресурсы могут быть ограничены, и выделенный объем памяти для процесса может быть значительно меньше.
Как решить проблему
Несмотря на отсутствие доступа к root-правам для изменения конфигурации сервера, вы можете использовать несколько подходов для увеличения доступной памяти для npm во время установки Mautic.
-
Настройка флага памяти для Node.js:
Вы можете попробовать установить переменную окружения, чтобы увеличить лимит памяти для процесса Node.js. Перед выполнением командыnpm ci
, установите флаг--max-old-space-size
. Вы можете сделать это, добавив следующую команду в ваш скрипт установки:export NODE_OPTIONS="--max-old-space-size=4096" # Установите желаемый объем в МБ
Это установит максимальный лимит памяти, который Node.js может использовать, на значение в 4 ГБ. После этого выполните команду установки Mautic снова.
-
Оптимизация процесса установки:
Попробуйте выполнять установку Mautic на более минимальной конфигурации, отключив некоторые несущественные пакеты или скрипты, если это возможно. Например, вы можете временно отключить обработку стилей или отключить некоторые зависимости, чтобы снизить потребление памяти в процессе установки. -
Использование более легковесных инструментов:
Если у вас есть доступ к альтернативным инструментам, рассмотрите возможность использованияyarn
вместоnpm
, так как иногдаyarn
может более эффективно использовать память:# Установите yarn, если он еще не установлен npm install --global yarn
После этого выполните команду с
yarn
:yarn install --prefer-offline --no-audit
-
Проверка текущих настроек npm:
Убедитесь, чтоnpm
иnode
работают эффективно на вашем окружении. Вы можете обновить их до последних версий, чтобы воспользоваться актуальными улучшениями производительности. -
Использование сервисов облачного хостинга:
Если возможна работа с облачными сервисами, можно рассмотреть временный переход на облачный хостинг, который предоставляет больше ресурсов и больше контроля над конфигурациями. Это может быть более долгосрочным решением, если такие установки часто требуют больших объемов памяти.
Заключение
Установка Mautic может быть сложным процессом из-за ограничения ресурсов на совместном хостинге. Однако с помощью вышеуказанных шагов вы можете попытаться решить проблему нехватки памяти. Помните, что оптимизация конфигурации вашего окружения и использование альтернативных инструментов может значительно улучшить процесс установки.