温馨提示×

nodejs日志异常ubuntu怎排查

小樊
34
2026-10-03 13:46:49
栏目: 编程语言

在 Ubuntu 上排查 Node.js 日志异常,一般按「看日志 → 看进程 → 看资源 → 看代码/配置」的思路来。下面是一套常用排查流程:


一、先看日志在哪、是什么异常

1. 常见日志位置

  • 应用自己打的日志
    • ./logs/
    • stdout / stderr
  • 使用 PM2
    pm2 logs
    pm2 logs app-name
    
  • 使用 systemd
    journalctl -u your-node-service -f
    
  • Nginx 反向代理(如有)
    tail -f /var/log/nginx/error.log
    

2. 常见异常类型

  • Error: listen EADDRINUSE → 端口被占用
  • Cannot find module → 依赖缺失
  • unhandledRejection / uncaughtException → 代码异常
  • ENOMEM → 内存不足
  • ETIMEDOUT → 外部接口慢/不通

二、确认 Node 进程状态

ps aux | grep node

或

systemctl status your-node-service

看是否:

  • 进程挂了(restart 循环)
  • CPU / 内存异常高

三、系统资源排查(Ubuntu)

1. 内存

free -h

Node 默认内存上限约 1.7G(老版本),可加:

node --max-old-space-size=2048 app.js

2. CPU

top
htop

3. 文件描述符

ulimit -n

高并发时可能不够:

ulimit -n 65535

4. 磁盘

df -h
du -sh /var/log/*

日志写满磁盘也会导致异常。


四、网络与外部依赖

curl http://localhost:3000
ping api.xxx.com
telnet api.xxx.com 443

如果是 Docker / 云服务器,注意:

  • 安全组
  • 防火墙
ufw status

五、Node 专项排查

1. 开启详细日志

process.on('uncaughtException', e => {
  console.error('uncaught', e);
});
process.on('unhandledRejection', e => {
  console.error('unhandled', e);
});

2. 用 debug 模式

DEBUG=* node app.js

3. 内存泄漏

node --inspect app.js

用 Chrome DevTools 看 heap。


六、如果是“日志不输出 / 少了”

  • 是否用了 console.log 被 PM2 吞了
  • 是否日志被 rotate 切割
  • 是否 stderr 没重定向
node app.js >> app.log 2>&1

七、快速自检清单 ✅

  • [ ] 日志路径确认
  • [ ] 进程是否存活
  • [ ] 端口是否被占用
  • [ ] 内存是否爆
  • [ ] 外部接口是否通
  • [ ] 是否有未捕获异常

如果你愿意,可以把:

  • 具体报错信息
  • 启动方式(pm2 / systemd / docker)
  • Ubuntu 版本 + Node 版本

发出来,我可以直接帮你定位。

0 踩