在 Ubuntu 上排查 Node.js 崩溃,一般可以从日志、错误类型、系统资源、代码层面逐步入手。下面给你一套比较实用的排查思路。
如果是前台运行:
node app.js
崩溃时通常会输出:
Error: ...TypeError: ...RangeError: ...Segmentation fault (core dumped)如果是后台运行(pm2 / systemd / nohup),看对应日志。
例如:
TypeError: Cannot read properties of undefined
✅ 排查:
✅ 建议:
process.on('uncaughtException', (err) => {
console.error('uncaughtException', err);
});
process.on('unhandledRejection', (reason) => {
console.error('unhandledRejection', reason);
});
错误示例:
FATAL ERROR: Ineffective mark-compacts near heap limit
✅ 排查:
node --max-old-space-size=4096 app.js
查看内存使用:
top
htop
或代码中:
console.log(process.memoryUsage());
✅ 常见原因:
Segmentation fault (core dumped)
✅ 可能原因:
✅ 排查:
node -v
npm ls
ldd your_module.node
Ubuntu 可能被系统杀掉:
dmesg | grep -i killed
或:
journalctl -xe
✅ 常见:
查看限制:
ulimit -a
pm2 logs
pm2 monit
pm2 describe <id>
journalctl -u your-node-service -f
ulimit -c unlimited
ls -lh core*
gdb node core
如果你愿意,可以把具体报错信息或运行方式(pm2 / docker / systemd)发出来,我可以直接帮你定位原因。