Ubuntu 上 Node.js 内存管理实操指南
一 核心原理与关键指标
二 监控与排查
const fs = require('fs');
setInterval(() => {
const m = process.memoryUsage();
const msg = `${new Date().toISOString()} RSS:${m.rss/1024/1024}MB ` +
`HeapTotal:${m.heapTotal/1024/1024}MB HeapUsed:${m.heapUsed/1024/1024}MB External:${m.external/1024/1024}MB\n`;
fs.appendFileSync('memory.log', msg);
}, 1000);
node --inspect app.js,在 Chrome 打开 chrome://inspect 进行内存分析。heapdump.writeSnapshot('/path/snap.heapsnapshot');node --inspect --heapsnapshot-signal=SIGUSR2 app.js,向进程发送 SIGUSR2 即可写快照。'leak' 事件,辅助发现持续增长的对象。三 常见泄漏点与修复要点
四 运行时配置与运维策略
node --max-old-space-size=2048 app.js。注意:该值需在启动时确定,运行中不可变更。sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
注意:Swap 能缓解 OOM,但会带来性能下降,应作为临时或过渡方案。五 快速排查清单