База знания - AI-агентов

Инструкция: Решение проблемы «Ошибки памяти в self-hosted n8n»

При активном использовании self-hosted n8n многие пользователи сталкиваются с ситуацией, когда работавшие ранее сценарии начинают внезапно прерываться с ошибкой. Часто в логах выполнения можно увидеть сообщения, содержащие слова «Out of Memory» (нехватка памяти) или «heap out of memory».
Это нормальная ситуация, которая говорит о том, что ваши задачи выросли, а ресурсы остались прежними. Эта инструкция поможет вам провести диагностику и по шагам устранить проблему, двигаясь от самых простых решений к более техническим.

Шаг 0: Диагностика — где именно проблема?

Прежде чем что-то менять, нужно точно определить источник проблемы.
  1. Зайдите в ваш n8n и откройте раздел «Executions» (Запуски).
  2. Найдите сценарий, который завершился с ошибкой (он будет подсвечен красным).
  3. Откройте его и посмотрите, какой именно узел (node) в цепочке стал красным. Именно на этом шаге произошел сбой.
Задайте себе вопрос: «Что делает этот узел?». Чаще всего проблемы возникают на узлах, которые:
  • Обрабатывают большой объем данных (например, читают тысячи строк из Google Sheets или базы данных).
  • Загружают из интернета или читают с диска большой файл (PDF, ZIP-архив, видео).
Определив проблемный узел, вы сможете применить одно из следующих решений.

Шаг 1: Простые решения на уровне сценария

Всегда начинайте с оптимизации самого сценария. Часто это решает проблему без дополнительных расходов и сложных настроек.
Решение А: Обрабатывайте данные частями (включаем пакетный режим)
Проблема: Ваш сценарий пытается загрузить в память сразу 10 000 строк из таблицы, чтобы потом поочередно их обработать. На сервере с 2 ГБ оперативной памяти это почти гарантированно приведет к сбою.
Инструкция: Используйте встроенный узел «Split In Batches» (Разбить на пакеты).
  1. Найдите в сценарии узел, который выдает большой массив данных (например, «Google Sheets - Read»).
  2. Сразу после него добавьте узел «Split In Batches».
  3. В настройках узла укажите Batch Size (Размер пакета), например, 100.
  4. Всю последующую логику (отправка сообщения, создание сделки и т.д.) стройте уже после узла «Split In Batches».
Теперь n8n не будет загружать все 10 000 строк сразу. Он возьмет первые 100, выполнит для них всю цепочку действий, освободит память, затем возьмет следующие 100 и так далее, пока не обработает весь список.
Решение Б: Отключайте обработку файлов (бинарных данных)
Проблема: Ваш узел «HTTP Request» скачивает PDF-файл размером 50 МБ. По умолчанию n8n пытается сохранить весь этот файл в памяти, чтобы передать его следующему узлу, что может вызвать сбой.
Инструкция: Если вам не нужно содержимое файла, а только информация о нем (или вы просто хотите сохранить его на диск), измените настройки узла.
  1. Откройте настройки узла, который скачивает файл (например, «HTTP Request»).
  2. Найдите опцию "Response is binary data" (Ответ — бинарные данные) или похожую.
  3. Если эта опция включена, а вам нужно только сохранить файл, убедитесь, что в следующем же узле вы используете действие «Write Binary File» (Записать бинарный файл), которое сохранит его на диск и освободит память. Если содержимое файла вам вообще не нужно, отключите эту опцию.

Шаг 2: Настройки на уровне сервера

Если оптимизация сценариев не помогла, значит, проблема в ресурсах самого сервера.
Решение В: Увеличьте оперативную память сервера (простой путь)
Проблема: Ваши задачи объективно требуют больше ресурсов, чем может дать ваш текущий тариф VPS.
Инструкция: Это самый прямой, хоть и платный способ.
  1. Зайдите в личный кабинет вашего хостинг-провайдера.
  2. Найдите услугу вашего VPS/VDS сервера.
  3. Смените тарифный план на следующий по мощности (например, перейдите с тарифа с 2 ГБ RAM на тариф с 4 ГБ RAM).
  4. После смены тарифа перезагрузите сервер.
Решение Г: Увеличьте лимит памяти для самого n8n (продвинутый путь)
Проблема: По умолчанию, даже если на вашем сервере 4 ГБ памяти, сам процесс n8n может быть настроен на использование только части из них (например, 1.5 ГБ). Мы можем дать ему команду использовать больше.
Инструкция: Это делается через добавление переменной окружения в конфигурацию Docker.
  1. Подключитесь к вашему серверу и найдите файл docker-compose.yml, который вы использовали для установки n8n.
  2. Откройте его для редактирования.
  3. Найдите секцию n8n: и внутри нее — подсекцию environment:.
  4. Добавьте в эту секцию новую строку: - NODE_OPTIONS=--max-old-space-size=3072
  5. Сохраните файл.
  6. Перезапустите n8n, выполнив в той же папке команду: docker-compose up -d
Что означает эта команда? 3072 — это лимит памяти в мегабайтах (3 ГБ). Рекомендуется устанавливать значение примерно на 25% меньше, чем общий объем RAM на вашем сервере, чтобы оставить место для операционной системы. Например, для сервера с 4 ГБ RAM хорошее значение — 3072, для 8 ГБ RAM — 6144.

Итог

При возникновении ошибок памяти действуйте последовательно:
  1. Проанализируйте сценарий: найдите узел, который обрабатывает много данных или большие файлы.
  2. Оптимизируйте сценарий: используйте пакетную обработку (Split In Batches) и аккуратно работайте с файлами.
  3. Если не помогло, увеличьте ресурсы: либо повысьте тариф VPS, либо увеличьте лимит памяти для n8n через переменную NODE_OPTIONS.
Чаще всего проблема решается уже на первых двух шагах, не требуя дополнительных затрат.
N8N