Node.js 服务器(尤其是基于 Express、Koa、NestJS 等框架)出故障时,排查思路通常围绕 “进程状态 → 日志 → 资源 → 代码 → 网络” 逐层展开。下面给你一套实操性较强的排查技巧清单,常用于线上和测试环境。
ps -ef | grep node
# 或
pgrep -fl node
lsof -i :3000
# 或
netstat -tunlp | grep 3000
pm2 list
pm2 logs
pm2 restart app
systemctl status node-app
journalctl -u node-app -f
pm2 logs app --lines 100
Error: listen EADDRINUSECannot find moduleMaxListenersExceededWarningJavaScript heap out of memorytop -p $(pgrep node)
# 或
htop
Node 特有:
node --max-old-space-size=4096 app.js
top
如果 Node CPU 持续 > 80%:
lsof -i :3000
curl http://127.0.0.1:3000/health
curl -I http://xxx
常见原因:
✅ 必须有:
process.on('uncaughtException', (err) => {
console.error('uncaughtException:', err);
});
process.on('unhandledRejection', (reason) => {
console.error('unhandledRejection:', reason);
});
try {
await doSomething();
} catch (e) {
// 没 return,代码继续执行
}
app.use(express.json());
app.use(router);
SHOW PROCESSLIST;
node --inspect app.js
Chrome DevTools → chrome://inspect
clinic flame0xnode --profheapdump
| 现象 | 可能原因 | 排查方式 |
|---|---|---|
| 启动即退出 | 代码抛错 | 看日志 |
| 偶尔宕机 | 内存泄漏 | 看内存曲线 |
| CPU 飙高 | 死循环 | profiling |
| 请求无响应 | 中间件卡住 | curl + 日志 |
| 端口冲突 | 多实例 | lsof |
| 线上偶发错误 | 异步未捕获 | unhandledRejection |
如果你愿意,可以告诉我:
我可以给你更针对性的排查步骤。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。