Установка Mautic не удалась из-за недостатка памяти для npm.

Вопрос или проблема

Итак, я пытаюсь установить 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.

  1. Настройка флага памяти для Node.js:
    Вы можете попробовать установить переменную окружения, чтобы увеличить лимит памяти для процесса Node.js. Перед выполнением команды npm ci, установите флаг --max-old-space-size. Вы можете сделать это, добавив следующую команду в ваш скрипт установки:

    export NODE_OPTIONS="--max-old-space-size=4096" # Установите желаемый объем в МБ

    Это установит максимальный лимит памяти, который Node.js может использовать, на значение в 4 ГБ. После этого выполните команду установки Mautic снова.

  2. Оптимизация процесса установки:
    Попробуйте выполнять установку Mautic на более минимальной конфигурации, отключив некоторые несущественные пакеты или скрипты, если это возможно. Например, вы можете временно отключить обработку стилей или отключить некоторые зависимости, чтобы снизить потребление памяти в процессе установки.

  3. Использование более легковесных инструментов:
    Если у вас есть доступ к альтернативным инструментам, рассмотрите возможность использования yarn вместо npm, так как иногда yarn может более эффективно использовать память:

    # Установите yarn, если он еще не установлен
    npm install --global yarn

    После этого выполните команду с yarn:

    yarn install --prefer-offline --no-audit
  4. Проверка текущих настроек npm:
    Убедитесь, что npm и node работают эффективно на вашем окружении. Вы можете обновить их до последних версий, чтобы воспользоваться актуальными улучшениями производительности.

  5. Использование сервисов облачного хостинга:
    Если возможна работа с облачными сервисами, можно рассмотреть временный переход на облачный хостинг, который предоставляет больше ресурсов и больше контроля над конфигурациями. Это может быть более долгосрочным решением, если такие установки часто требуют больших объемов памяти.

Заключение

Установка Mautic может быть сложным процессом из-за ограничения ресурсов на совместном хостинге. Однако с помощью вышеуказанных шагов вы можете попытаться решить проблему нехватки памяти. Помните, что оптимизация конфигурации вашего окружения и использование альтернативных инструментов может значительно улучшить процесс установки.

Оцените материал
Добавить комментарий

Капча загружается...