CPU и memory spike в n8n: runbook диагностики ¶
Обновлено: 2026-05-29
Intent: runbook CPU memory spike: найти workflow, node, payload или worker, который перегружает n8n
H1: CPU и memory spike в n8n: как найти тяжёлый workflow и стабилизировать workers
Schema: TechArticle, HowTo, FAQPage, BreadcrumbList
Old word count: 663
New word count: 792
Короткий ответ ¶
CPU или memory spike в n8n почти всегда связан с конкретным типом нагрузки: большой payload, бесконечный loop, тяжёлый Code node, массовые HTTP-запросы, AI/RAG-обработка, binary files или слишком высокая concurrency workers. Сначала определите, перегружен main instance или worker, затем найдите workflow по времени всплеска и execution history. Быстрый mitigation — остановить источник нагрузки, снизить concurrency, разбить batch и вынести тяжёлые операции из одного execution.
Симптомы ¶
Проблема может выглядеть как «n8n тормозит», но важно быстро разделить симптомы:
- UI долго открывается или теряет соединение;
- workflow запускается, но зависает на одном node;
- worker container перезапускается по OOM;
- Docker показывает 100% CPU у одного контейнера;
- queue растёт, хотя Redis доступен;
- AI workflow резко увеличил стоимость и latency;
- Postgres жив, но executions идут медленно;
- reverse proxy отдаёт 502/503 из-за недоступного upstream.
Если используется queue mode, main instance может выглядеть здоровым, а проблема будет только в одном worker.
1. Определить, какой процесс перегружен ¶
Начните с контейнеров:
docker stats
docker compose ps
docker compose logs --tail=100 n8n
docker compose logs --tail=100 n8n-worker
Если CPU/Mem растёт у worker — ищите production executions. Если у main — проверьте UI, manual executions, webhooks, cron triggers и frontend/API нагрузку.
Полезная классификация:
| Где spike | Вероятные причины |
|---|---|
| Main instance | manual execution, UI, webhook burst, API calls, bad query |
| Worker | тяжёлый workflow, loop, AI/RAG, binary data, большой batch |
| Postgres | много execution data, slow query, retention, большой payload |
| Redis | очередь, burst jobs, network latency |
| Reverse proxy | DDoS/spam webhook, keepalive/timeouts |
2. Найти workflow по времени ¶
Сопоставьте время spike с execution history. Ищите executions, которые:
- стартовали перед ростом CPU/RAM;
- имеют большой payload;
- долго находятся в running;
- падают на одном node;
- запускаются слишком часто;
- обрабатывают файлы, списки, AI-запросы или nested loops.
Если есть queue mode, посмотрите, все ли workers страдают одинаково. Один перегруженный worker часто указывает на конкретный job, а общий рост — на batch/cron/webhook storm.
3. Быстро снизить нагрузку ¶
Mitigation зависит от ситуации. Цель — остановить лавину, не потеряв критичные события.
| Ситуация | Быстрый mitigation |
|---|---|
| Webhook storm | временно отключить источник, rate limit на proxy |
| Cron слишком частый | деактивировать workflow или увеличить интервал |
| Worker OOM | снизить concurrency, разбить batch, увеличить memory limit |
| AI cost/latency spike | отключить AI ветку, добавить лимиты и human approval |
| Loop без ограничения | остановить execution, добавить guard condition |
| Большие файлы | перенести обработку в отдельный поток/хранилище |
Не лечите spike только увеличением ресурсов. Это может скрыть ошибку workflow и превратить разовый сбой в дорогую постоянную нагрузку.
4. Частые причины в workflow ¶
Большой batch без пауз.
Например, 20 000 строк из CRM идут в API без chunking. Решение: Loop Over Items, размер batch, Wait, checkpoint.
Code node держит всё в памяти.
Скрипт собирает огромный массив, сортирует, делает map/filter на full payload. Решение: обработка кусками, предварительная фильтрация, не хранить лишние поля.
AI/RAG workflow без ограничений.
Один входной запрос запускает десятки tool calls или retrieval по большой базе. Решение: max iterations, лимит документов, structured output, fallback.
Binary data в execution.
PDF, изображения, CSV и вложения резко увеличивают память и размер execution data. Решение: хранить файлы вне execution, передавать ссылки/ID.
Retry усиливает аварию.
Когда внешний API отдаёт 429/500, агрессивные retry создают ещё больше запросов. Решение: exponential backoff, dead-letter path, лимит попыток.
5. Что изменить после инцидента ¶
- Добавить лимит batch size.
- Описать допустимую concurrency для workers.
- Ввести guard condition для loop.
- Ограничить AI tools и max iterations.
- Не сохранять full payload, если он не нужен.
- Добавить correlation ID для поиска execution.
- Настроить alert на memory, CPU и queue depth.
- Вынести тяжёлые workflow на отдельные workers, если архитектура позволяет.
Мини-чеклист ревью тяжёлого workflow ¶
- Есть ли ограничение на количество items?
- Что будет, если внешний API вернёт 429?
- Есть ли Wait между пачками?
- Есть ли дедупликация входных событий?
- Можно ли обработать payload без хранения всех данных в памяти?
- Нужен ли этот файл внутри n8n или достаточно ссылки?
- Что произойдёт при повторном запуске execution?
FAQ ¶
Почему UI падает, хотя проблема в worker?
При общей нехватке ресурсов на сервере worker может забрать CPU/RAM так, что main instance, Postgres или proxy тоже начнут отвечать медленно.
Что лучше: добавить worker или уменьшить concurrency?
Если workflow CPU-bound или memory-heavy, сначала уменьшите concurrency и оптимизируйте payload. Добавление workers помогает только после устранения причины перегруза.
Как понять, что виноват AI workflow?
Смотрите время, количество tool calls, размер context, latency provider и стоимость. AI-ветки часто дают spike из-за повторов, длинного контекста и отсутствия ограничений.
Можно ли остановить running execution?
Да, но сначала зафиксируйте, какой бизнес-процесс будет затронут. Для платежей, CRM и уведомлений может потребоваться replay или ручная сверка.
Как применять playbook в команде ¶
Playbook «CPU и memory spike в n8n» должен быть понятен человеку, который не писал workflow. Поэтому в нём нужны входной сигнал, частота запуска, критерий тревоги, ответственный и ожидаемое действие после срабатывания.
Используйте этот материал как операционную инструкцию: что проверить, где посмотреть логи, как понять масштаб проблемы и когда эскалировать.
| Слой | Что зафиксировать | Зачем |
|---|---|---|
| Вход | входной item по теме «CPU и memory spike в n8n»: источник события, внешний ID, время получения и нормализованные поля | позволяет повторить проблему без доступа к production-секретам |
| Контроль | successful_executions, skipped_items, retry_count, error_branch_usage, manual_override_count | показывает деградацию раньше, чем пользователи начинают писать в поддержку |
| Безопасность | принять happy path за production-готовность и не проверить повторы, пустые входы, откат и наблюдаемость | снижает риск скрытых дублей, утечки данных и неконтролируемых write-действий |
| Готовность | есть тест на happy path, пустой вход, повтор и сбой внешнего сервиса для «CPU и memory spike в n8n» | делает статью пригодной для runbook, а не только для чтения |
Пример безопасного входного контракта ¶
{
"source": "manual|webhook|schedule|api",
"external_id": "stable-id-from-source",
"received_at": "2026-05-29T10:00:00Z",
"payload_version": "v1",
"dry_run": true,
"audit": {"workflow_id": "...", "execution_id": "..."}
}
Критерий готовности ¶
- есть понятный вход, выход и владелец процесса
- проверены пустой input, повтор события и ошибка внешнего сервиса
- результат логируется без секретов и персональных данных
- страница связана с соседними рецептами, ошибками или playbook по теме