Chọn RAM cho n8n theo số workflow chạy song song

Bạn cài n8n lên VPS, chạy vài workflow đầu thấy ngon, thêm dần thì bắt đầu treo execution, container bị restart, hoặc tệ hơn là không SSH vào nổi. Vấn đề thường gặp nhất: RAM cho n8n không đủ. n8n là công cụ tự động hoá (automation) mạnh, nhưng nó cũng ngốn tài nguyên theo cách riêng, mỗi workflow chạy là một process Node.js, và khi chạy song song, RAM sẽ là nút thắt đầu tiên. Bài này mình sẽ chỉ bạn cách ước lượng RAM thực tế dựa trên số workflow đồng thời, cách kiểm tra bằng docker stats, và map sang gói VPS cụ thể.
- n8n idle (không workflow chạy): ~150-250 MB RAM. Chỉ có web UI và background service.
- Mỗi workflow đang chạy (execution): ~30-80 MB RAM tuỳ độ phức tạp (gọi API, xử lý JSON, chạy code inline). Workflow đơn giản (HTTP request + filter) ~30 MB; workflow có Code node, database query, hoặc vòng lặp ~60-80 MB.
- Workflow chạy nền (Webhook, Cron trigger): ~10-20 MB thêm cho phần polling, nhưng khi trigger thì leo lên mức execution.
- Chạy Docker Compose + n8n + PostgreSQL (recommended): PostgreSQL tốn thêm ~150-300 MB tuỳ cache và số bảng.
Vì sao cần chọn đúng RAM cho n8n?
n8n chạy trên Node.js, cơ chế event-loop. Mỗi workflow execution là một luồn xử lý bất đồng bộ. Nếu bạn có 10 workflow chạy cùng lúc, Node.js sẽ tạo các worker tương ứng. RAM không đủ dẫn đến OOM kill (Out Of Memory), kernel Linux sẽ tìm process ngốn RAM nhiều nhất và kill. Với Docker, container bị kill và tự restart, gây mất execution đang chạy. Dấu hiệu dễ thấy: execution báo lỗi "Execution failed" mà không rõ nguyên nhân, hoặc docker ps thấy container "restarting" liên tục.
Ngoài ra, một yếu tố dễ bỏ qua: swap. Nếu VPS có swap, khi swap được dùng, hiệu năng n8n sẽ giảm thấy rõ, execution chậm gấp 5-10 lần vì phải đọc/ghi lên đĩa. Swap không giải quyết vấn đề thiếu RAM, nó chỉ kéo dài cái chết. Vì thế cách hàng đầu vẫn là đúng RAM ngay từ đầu.
Bước 1, Đo RAM thực tế bằng docker stats
Đừng đoán mò. Dùng lệnh này khi n8n đang chạy và có workflow hoạt động:
docker stats n8n --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}"
Lệnh trên in ra mức RAM hiện tại của container n8n (dạng "150MiB / 2GiB", đã dùng / giới hạn). Quan sát trong 5-10 phút khi có workflow đang chạy để có số trung bình. Bạn cũng nên watch live:
docker stats n8n --no-stream | awk '{print $3}'
Để có số liệu chính xác hơn, hãy tạo một workflow giả lập chạy 10 execution cùng lúc (dùng SplitInBatches + HTTP request đến một API test) và ghi lại RAM peak.
Lưu ý: Nếu bạn dùng Docker Compose với PostgreSQL, chạy lệnh docker stats không tham số để xem cả container n8n và PostgreSQL. RAM của PostgreSQL cũng ảnh hưởng đến tổng tài nguyên sẵn có.
| Số workflow chạy song song | RAM tiêu thụ ước tính (n8n + PostgreSQL) | Ghi chú |
|---|---|---|
| 0 (idle + web UI) | ~400 MB | Chỉ có giao diện, không có execution |
| 5-10 workflow | ~800 MB - 1.2 GB | Phù hợp môi trường cá nhân, test |
| 15-30 workflow | ~1.5 GB - 2.5 GB | Cần ít nhất 2 GB RAM khả dụng, hàng đầu 4 GB |
| 50+ workflow (có đồng thời) | ~3 GB - 5 GB | Cần 4-8 GB RAM, tuỳ độ phức tạp |
| 100+ workflow + cron/webhook dày | trên 6 GB | Nên dùng >= 8 GB RAM, có thể cần 16 GB |
Dấu hiệu thiếu RAM trên n8n, nhận biết sớm
Nếu bạn không muốn chạy docker stats hàng ngày, hãy để ý các triệu chứng này:
- Execution treo không hồi kết: Workflow bắt đầu chạy nhưng mãi không xong, không báo lỗi. Lỗi do Node.js heap không đủ để push event tiếp theo.
- Lỗi "Cannot allocate memory" trong log: Xem
docker logs n8nhoặc vào web UI → Settings → Logs. Nếu thấy dòng "FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed, JavaScript heap out of memory" thì đã thiếu RAM trầm trọng. - Container bị OOM kill và restart loop: Chạy
docker ps -athấy container n8n restart nhiều lần. Kiểm tradmesg | tail -20sẽ thấy dòng "Out of memory: Killed process ..." kèm PID của node. - Response chậm bất thường: Webhook gửi request nhưng phản hồi mất 30 giây thay vì vài giây. Đây là dấu hiệu swap đang hoạt động.
Một mẹo nhanh: cài htop trên VPS apt install htop và để chạy nền. Nếu thấy thanh RAM đầy 80-90% liên tục, bạn đang cận kề nguy cơ OOM.
Map RAM cho n8n sang gói VPS thực tế
Dựa trên số liệu trên, đây là cách map sang các gói VPS n8n phù hợp. Lưu ý các con số này tính luôn RAM cho PostgreSQL (nếu dùng) và OS overhead (~200-300 MB cho Ubuntu 24.04 hoặc Debian 12).
| Mức RAM VPS | Số workflow song song tối đa | Số workflow cron/webhook nền | Gói tham khảo |
|---|---|---|---|
| 2 GB | 10-15 workflow | ~20-30 trigger | VPS VNLite 2 GB (phù hợp cá nhân, test automation) |
| 4 GB | 30-50 workflow | ~50-100 trigger | VPS VNx1 4 GB (cho nhóm nhỏ, chatbot) |
| 8 GB | 80-150 workflow | 200+ trigger | VPS VNx2 8 GB (cho doanh nghiệp nhỏ, workflow phức tạp) |
| 16 GB | 200-400 workflow | 500+ trigger | VPS VNx4 16 GB (production lớn, multi-team) |
Các gói VPS Linux này đều dùng ổ NVMe, mỗi VPS có 1 IPv4 riêng thuộc dải Việt Nam, băng thông trong nước mặc định 100 Mbps trên port 1 Gbps (lưu ý: đây là port 1 Gbps nhưng tốc độ cam kết là 100 Mbps cho lưu lượng nội địa), quốc tế dùng pool chung khoảng 4 đến 10 Mbps. Bạn được full root để tự cấu hình Docker và n8n, có snapshot và backup, uptime 99.9%, trả theo tháng. Nếu cần nhiều CPU hơn cho workflow có code nặng (ví dụ xử lý ảnh, PDF) thì nên lấy gói cao hơn.
Giá tham khảo từ khoảng 189.000đ/tháng cho gói VNLite 1 vCPU / 2 GB / 20 GB NVMe. Xem bảng giá chi tiết tại trang giá VPS để có số mới nhất.
Một số lưu ý khi chạy n8n production
- Giới hạn RAM cho container: Dùng Docker flag
--memory="512m"để giới hạn RAM tối đa cho container n8n, tránh một workflow lỗi ăn hết RAM VPS. Tuy nhiên đừng đặt quá thấp, n8n sẽ chết ngay. - Dùng execution process riêng: Trong n8n settings, bật "Execute Workflow Process" riêng cho mỗi workflow. Cài này tốn thêm RAM (mỗi process ~20 MB) nhưng cô lập lỗi, workflow này treo không ảnh hưởng workflow kia.
- Queue mode với Redis: Nếu có nhiều workflow chạy đồng thời (hàng trăm), mua thêm một VPS Linux nhỏ 1-2 GB chạy Redis riêng và bật queue mode trên n8n. Cách này cho phép chạy nhiều worker (nhiều VPS) xử lý execution song song, giảm tải RAM cho một máy.
Câu hỏi thường gặp
n8n có chạy được trên VPS 1 GB RAM không?
Có thể, nhưng rất hạn chế. Với 1 GB RAM, sau khi trừ OS và PostgreSQL, bạn chỉ còn ~500 MB cho n8n. Chạy được tối đa 2-3 workflow đơn giản cùng lúc. Khuyến nghị tối thiểu 2 GB RAM cho môi trường không production.
Làm sao biết workflow nào ngốn RAM nhất?
Vào n8n web UI → Settings → Usage → Workflows. Ở đây hiển thị thời gian chạy và số lỗi. Workflow nào execution lâu và hay lỗi thường là workflow phức tạp, bạn nên kiểm tra Code node hoặc database query.
Có cần tắt swap để n8n chạy nhanh không?
Không cần tắt hoàn toàn. Swap là lớp cứu cánh khi RAM đầy đột ngột. Nhưng nếu thấy swap được dùng thường xuyên (kiểm tra bằng free -h, cột "used" ở dòng Swap > 0), bạn cần nâng RAM ngay.
Dùng SQLite thay PostgreSQL có tiết kiệm RAM không?
SQLite tiết kiệm ~100-150 MB RAM so với PostgreSQL, nhưng không phù hợp cho production vì không chịu được nhiều concurrent write. PostgreSQL ổn định hơn cho n8n có nhiều workflow chạy song song.
Nên mua VPS theo tháng hay theo giờ cho n8n?
n8n thường chạy trong giờ hành chính, vì vậy thuê VPS theo tháng là tối ưu. Các VPS Việt Nam trả theo tháng, không hợp đồng dài hạn, dễ nâng cấp RAM khi cần.
Tôi có thể nâng RAM VPS khi đang chạy không?
Tuỳ nhà cung cấp. Hầu hết VPS Linux cho phép nâng cấp RAM online (không cần reboot) trên control panel. Bạn chỉ cần chọn gói cao hơn, hệ thống tự thay đổi thông số.
Bài viết liên quan
- Thuê VPS n8n giá rẻ cài sẵn, hướng dẫn chi tiết
- n8n là gì? Những ai nên sử dụng n8n
- Thuê VPS Việt Nam giá rẻ tại thueVPS cho mọi nhu cầu
- Cấu hình swap và tối ưu bộ nhớ cho VPS RAM thấp


