在 Debian 下调整 Node.js 的内存限制,常见场景是 堆内存不足(OOM) 或 需要跑大内存任务。下面按「常用 → 进阶 → 系统层面」给你一个完整说明。
Node.js 默认内存限制大约是:
export NODE_OPTIONS="--max-old-space-size=4096"
node app.js
表示 最大堆内存 4GB
echo 'export NODE_OPTIONS="--max-old-space-size=4096"' >> ~/.bashrc
source ~/.bashrc
NODE_OPTIONS="--max-old-space-size=8192" node server.js
--max-old-space-size最常用
--max-old-space-size=4096 # 4GB
--max-old-space-size=8192 # 8GB
--max-semi-space-size--max-semi-space-size=64
ENV NODE_OPTIONS="--max-old-space-size=4096"
或运行:
docker run -e NODE_OPTIONS="--max-old-space-size=4096" node:18
⚠️ Docker 内存 + Node 内存要匹配,否则会被 OOM Kill
[Service]
Environment="NODE_OPTIONS=--max-old-space-size=4096"
然后:
systemctl daemon-reload
systemctl restart your-node-service
console.log(process.memoryUsage());
console.log(process.versions.v8);
node -e "console.log(v8.getHeapStatistics())"
free -h
Node 不能突破系统物理内存 + swap
swapon --show
没有可临时加:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
uname -m
✅ 必须是 x86_64 / aarch64
JavaScript heap out of memory✅ 增加:
--max-old-space-size
检查:
node -p "process.env.NODE_OPTIONS"
是否被覆盖(PM2、Docker、systemd)
pm2 start app.js --node-args="--max-old-space-size=4096"
或:
export NODE_OPTIONS="--max-old-space-size=4096"
pm2 restart all
| 机器内存 | Node 堆建议 |
|---|---|
| 2 GB | 1024–1536 |
| 4 GB | 2048–3072 |
| 8 GB | 4096–6144 |
| 16 GB | 8192+ |
如果你愿意,可以告诉我:
我可以给你一个精确配置方案 ✅