在 Ubuntu 上排查 Node.js 日志异常,一般按「看日志 → 看进程 → 看资源 → 看代码/配置」的思路来。下面是一套常用排查流程:
./logs/stdout / stderrpm2 logs
pm2 logs app-name
journalctl -u your-node-service -f
tail -f /var/log/nginx/error.log
Error: listen EADDRINUSE → 端口被占用Cannot find module → 依赖缺失unhandledRejection / uncaughtException → 代码异常ENOMEM → 内存不足ETIMEDOUT → 外部接口慢/不通ps aux | grep node
或
systemctl status your-node-service
看是否:
free -h
Node 默认内存上限约 1.7G(老版本),可加:
node --max-old-space-size=2048 app.js
top
htop
ulimit -n
高并发时可能不够:
ulimit -n 65535
df -h
du -sh /var/log/*
日志写满磁盘也会导致异常。
curl http://localhost:3000
ping api.xxx.com
telnet api.xxx.com 443
如果是 Docker / 云服务器,注意:
ufw status
process.on('uncaughtException', e => {
console.error('uncaught', e);
});
process.on('unhandledRejection', e => {
console.error('unhandled', e);
});
DEBUG=* node app.js
node --inspect app.js
用 Chrome DevTools 看 heap。
console.log 被 PM2 吞了node app.js >> app.log 2>&1
如果你愿意,可以把:
发出来,我可以直接帮你定位。