在 Debian 上 Node.js 占用内存过高,通常可以从「排查原因 → 优化代码 → 系统层面限制」三个方向来解决。下面给你一套实用排查与处理方案。
top
# 或
htop
找到 node 进程,看:
node -e "console.log(process.memoryUsage())"
重点关注:
heapUsed:堆内存使用rss:常驻内存表现
排查方法
npm install -g heapdump
代码中:
const heapdump = require('heapdump');
setInterval(() => heapdump.writeSnapshot(), 60000);
用 Chrome DevTools 对比快照。
常见泄漏点
setIntervalremoveListener✅ 解决:
例如
const data = fs.readFileSync('big.json');
或:
const rows = await db.query('SELECT * FROM huge_table');
✅ 解决:
Node 默认堆内存:
如果你内存很大但 Node 频繁 GC:
node --max-old-space-size=4096 app.js
检查
ps aux | grep node
✅ 解决:
pm2 start app.js -i 2
如:
✅ 解决:
编辑:
/etc/systemd/system/node-app.service
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
MemoryMax=512M
systemctl daemon-reexec
systemctl restart node-app
deploy:
resources:
limits:
memory: 512M
pm2 start app.js --max-memory-restart 400M
你可以贴出:
top / htop 截图node -v)我可以直接帮你 定位是哪一类问题,并给具体改法。