温馨提示×

ubuntu nodejs日志什么原因多

小樊
33
2026-10-09 10:57:20
栏目: 编程语言

在 Ubuntu 上 Node.js 日志突然变多(日志量大、频繁输出),通常不是单一原因,而是下面几类常见情况。我按「最常见 → 较少见」给你梳理,并附排查方法。


一、最常见原因

1. 应用代码里日志级别太低 / 打印太多

  • 使用了 console.log / console.error 在:
    • 请求中间件里
    • 循环里
    • 高频定时器里
  • 日志库(winston / pino / bunyan)配置成了 debug / silly

✅ 排查:

grep -R "console.log" your_project/

看是否在生产环境也打了 debug 日志。


2. 请求量暴涨(正常但日志被放大)

  • 接口被频繁调用
  • 被爬虫 / 扫描器 / 恶意请求访问
  • 健康检查(K8s / Nginx)太频繁

✅ 现象:

  • access log 猛增
  • 同一 IP 大量请求

✅ 排查:

journalctl -u your-node-service | tail -n 100

或看 Nginx access log。


3. 异常 / 错误被反复抛出

  • 未捕获的 Promise rejection
  • 数据库连不上(不断重试)
  • 下游服务挂了(无限重试)

✅ 典型日志:

ECONNREFUSED
ETIMEDOUT
UnhandledPromiseRejection

✅ 排查:

journalctl -u node | grep -i error | tail -n 50

二、系统 / 运行方式相关

4. 使用 systemd,但 Node 输出到 stdout

  • Node 默认输出到 stdout
  • systemd 会全部记到 journal

✅ 表现:

  • /var/log/syslog 或 journalctl 很大
  • 磁盘占用上涨快

✅ 优化:

# systemd service
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log

5. 日志没有轮转(log rotate 没配置)

  • 日志文件一直增长
  • 看起来“日志很多”

✅ 检查:

ls -lh /var/log/
logrotate -d /etc/logrotate.conf

6. PM2 重复日志

  • PM2 默认:
    • 有 ~/.pm2/logs
    • 又接 systemd / docker
  • 一份日志多处写

✅ 建议:

  • 只用一种日志收集方式

三、隐蔽但容易忽略的原因

7. 内存泄漏导致频繁 GC / 警告

  • Node 输出 GC 日志
  • 或自己打了内存监控日志

✅ 排查:

node --trace-gc app.js

8. 依赖库自身在打日志

  • axios / mongoose / redis / grpc
  • 某些库在 error / retry 时狂打日志

✅ 解决:

  • 关闭库内部日志
  • 或在 wrapper 层统一拦截

四、快速定位 checklist(推荐你先做)

# 1. 看服务日志最近在打什么
journalctl -u your-node-service -n 200

# 2. 看错误
journalctl -u your-node-service | grep -i error

# 3. 看文件大小
du -sh /var/log/*

# 4. 看进程输出
pm2 logs  # 如果用 pm2

五、我可以继续帮你

如果你愿意,可以贴:

  • 日志示例(脱敏)
  • 启动方式(systemd / pm2 / docker)
  • Node 版本

我可以直接帮你判断是 代码问题、配置问题,还是被攻击。

0 踩