温馨提示×

ubuntu nodejs内存怎么调

小樊
65
2026-09-06 23:07:13
栏目: 编程语言

在 Ubuntu 上调整 Node.js 的内存,通常是从运行参数、系统限制、进程管理三个层面来做。下面按常见场景说明。


一、通过 Node.js 启动参数调整内存(最常用)

Node.js 默认老 heap 限制大约是 1.5GB(旧版本)或 2GB(新版本),可通过以下参数调整:

1. 调整 V8 堆内存

node --max-old-space-size=4096 app.js

表示最大老生代堆内存为 4GB

常用单位:

  • 数字 = MB
  • 也可写成:--max-old-space-size=4096

其他相关参数:

node \
  --max-old-space-size=4096 \
  --max-new-space-size=1024 \
  app.js

⚠️ 32 位系统有硬限制(通常 < 4GB)


二、通过环境变量(推荐用于 PM2 / Docker)

1. 使用 NODE_OPTIONS

export NODE_OPTIONS="--max-old-space-size=4096"
node app.js

Docker 示例:

ENV NODE_OPTIONS="--max-old-space-size=4096"

三、使用 PM2 管理 Node.js(Ubuntu 常见)

1. 启动时限内存

pm2 start app.js --node-args="--max-old-space-size=4096"

2. ecosystem.config.js

module.exports = {
  apps: [{
    name: "app",
    script: "app.js",
    node_args: "--max-old-space-size=4096"
  }]
}

四、Ubuntu 系统层面限制(容易忽略)

1. 查看内存

free -h
htop

2. 查看 ulimit

ulimit -a

如果是容器或云服务器,可能受:

  • cgroup 内存限制
  • Docker --memory
  • Kubernetes resources.limits.memory

3. 修改 ulimit(示例)

ulimit -n 65535

(通常不影响 Node 堆内存,但影响文件句柄)


五、确认是否生效

node -e "console.log(process.memoryUsage())"

或在代码中:

console.log(process.env.NODE_OPTIONS);

六、典型问题对照表

问题 解决方式
heap out of memory 加大 --max-old-space-size
Docker 中无效 检查容器 memory limit
PM2 不生效 用 node_args 而不是 shell 变量
内存一直涨 检查内存泄漏,不是调大就能解决

如果你能告诉我:

  • Node 版本
  • 是否在 Docker / PM2 / 裸机
  • 报错信息(如 JS heap out of memory)

我可以给你更精确的建议。

0 踩