📅 最后更新于 2026-06-23

n8n 内存占用实测

以下是 n8n 自托管各组件的内存占用实测数据(在 Docker 环境下):

组件空闲内存运行时内存备注
n8n 主进程250-350MB350-500MBNode.js 进程,GC 不积极,内存占用逐渐升高
PostgreSQL50-80MB100-200MB共享缓冲区 + 连接开销
Docker 开销50-100MB50-100MBdockerd + containerd 常驻
系统基础150-250MB150-250MBsystemd / sshd / 其他守护进程
合计500-780MB650-1050MB1GB 机器所剩无几

总结:1GB 内存机器在空闲时还有 200-500MB 可用,但一旦有工作流执行(尤其是数据处理类),内存会迅速逼近上限,触发 swap 或 OOM Killer

1GB 能跑的 3 种场景

场景 1:轻量工作流 + SQLite(可行)

把 PostgreSQL 换成 SQLite,省下 100-200MB 内存。工作流以 Webhook 转发、定时 HTTP 请求为主(不涉及大文件处理、不涉及 AI)。Docker 换成裸装 n8n,再省 50-100MB。

精简后总内存占用约 400-500MB,留给工作流的内存有 500MB 左右——够用了。

安装命令参考(裸装):

npm install -g n8n
n8n start

或者用 SQLite 的 Docker Compose(省掉 PostgreSQL 容器):

services:
  n8n:
    image: n8nio/n8n
    ports:
      - "5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=yourpassword

场景 2:个人日常使用 + swap 兜底(勉强)

保留 PostgreSQL,加 1-2GB swap。日常空闲时 n8n + PostgreSQL 占 600-700MB,swap 基本不使用。有工作流执行时内存可能超 1GB,swap 介入。SSD 上的 swap 速度远慢于内存(NVMe 约 1000MB/s vs 内存 20000+MB/s),但至少不会 OOM 崩溃。

这种配置适合每天跑几个简单工作流、并发不超过 2 个的场景。注意:长期依赖 swap 会降低 SSD 寿命,但以 VPS 的使用寿命来说影响微乎其微。

场景 3:纯测试 / 开发环境(够用)

只是试用 n8n、写几个测试工作流、或者给团队 demo——1GB 完全够。因为不是长期负载,没有并发,不需要高可用。

1GB 不够的 3 种场景

场景 1:接入 AI / LLM 接口

用 n8n 的 AI 节点(OpenAI、Claude、本地 LLM),每个请求的内存开销远高于普通 HTTP。尤其是处理长文本、流式响应时,单工作流可能额外吃掉 200-500MB 内存。建议 4GB 起步

场景 2:多个并发工作流

如果同时有 3-5 个工作流在运行(定时并发、Webhook 同时触发),n8n 的内存是叠加的。1GB 顶不住。建议 2-4GB,看并发数量。

场景 3:团队使用

多人同时登录 n8n 界面编辑工作流、查看执行记录——每个 UI session 会触发额外的 API 请求和数据处理。建议 4GB+,并且上 PostgreSQL(SQLite 不支持并发写入)。

实用优化技巧

  1. 用 SQLite 替代 PostgreSQL:省 100-200MB 内存。缺点是不支持多实例、高并发,但个人使用完全够。
  2. 裸装 n8n 不用 Docker:直接 npm install -g n8n,省掉 Docker 守护进程的 50-100MB。用 pm2 守护进程。
  3. 限制 Node.js 内存:启动 n8n 时加 --max-old-space-size=384,限制 V8 堆内存上限,防止 n8n 无限制吃内存。但这会让 GC 更频繁(小小性能损失)。
  4. 调优 PostgreSQL(如果用的话):shared_buffers 设为 64MB,max_connections 设为 5,work_mem 设为 2MB。把 PostgreSQL 的胃口缩小。
  5. 启用来宾级 swap:fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile。2GB swap 能给你多一层保护。
  6. 控制工作流并发:n8n 环境变量 N8N_CONCURRENCY_PRODUCTION_LIMIT 设为 2(默认是 -1 不限),防止多个工作流同时执行打满 CPU 和内存。
  7. 定期重启 n8n:Node.js 的内存 GC 会随着运行时间增长而"迟缓"。用 pm2 或 cron 每周凌晨重启一次 n8n,释放累积的内存碎片。

配置推荐

场景推荐配置数据库月费参考
学习 / 测试 / 个人轻用1GB + 2GB swapSQLite$5-10
个人日常使用2GBPostgreSQL (64MB buffer)$10-15
重度使用 / 多工作流4GBPostgreSQL (256MB buffer)$20-30
团队 / AI 集成8GB+PostgreSQL (512MB+ buffer)$40-80

推荐哪家 VPS?

n8n 不需要中国优化线路——访问 n8n 面板的你大概率在国外,或者国内外都不是实时操作。性价比优先

  • 学习 / 个人轻用(1-2GB):RackNerd、CloudCone——年付 $15-30 搞定
  • 日常使用(2-4GB):Hetzner(欧洲用户,€4-6/月)、Vultr / DO(美国用户,$12-24/月)
  • 团队 / AI(8GB+):Hetzner 的大内存机型性价比最高(CX31 8GB 约 €8/月),或 Netcup 的 RS 系列

常见问题

n8n 能用 SQLite 而不装 PostgreSQL 吗?
可以,n8n 默认就用 SQLite。个人使用、轻量工作流场景 SQLite 完全够。只有当你需要多实例、高并发或团队协同时才需要 PostgreSQL。用 SQLite 能帮你在 1GB 机器上省下 100-200MB 内存。
Swap 对 n8n 性能影响大吗?
影响取决于 swap 被多频繁使用。日常 idle 时 swap 基本不用,不影响性能。工作流执行时如果内存不够触发 swap,响应时间会增加 2-10 倍。简单说:swap 是用来防止 OOM 崩溃的兜底,不是替代内存的。把 swap 用到日常水平就该升级了。
n8n 裸装和 Docker 哪个在 1GB 上更好?
裸装更好。Docker 多了 dockerd + containerd 两个常驻进程,约 50-100MB 额外开销,外加每个容器的基础层。1GB 机器上车裸装能多挤出近 100MB 可用内存——在 1GB 的环境里这是不小的数字。
n8n 跑 Telegram/微信 Bot 这种长连接工作流吃内存吗?
中等程度。Bot 工作流的 Webhook 连接本身不重,但如果你的 Bot 有大量用户同时交互,多个工作流实例并发,内存占用会线性增长。预估 1GB 能撑 5-10 个并发用户的 Bot,再多建议 2GB。
n8n vs Activepieces vs Zappier 自托管,内存消耗对比?
Activepieces 和 n8n 类似(Node.js 后端),内存占用相当。Zappier 不自托管。从内存效率看,用 Go/Rust 写的自动化工具(比如 Windmill)比 n8n 更省内存,但社区和节点生态远不如 n8n。