在 Debian 系统上,“JS 日志延迟”通常不是单一原因,而是系统、运行环境、日志框架、应用代码共同作用的结果。下面按常见场景给你一个结构化的排查清单,并给出对应解决办法。
| 场景 | 常见原因 |
|---|---|
| Node.js 应用 | stdout 缓冲、日志库异步、反压 |
| 浏览器 JS | 控制台异步、日志合并 |
| 容器 / systemd | stdout 行缓冲 |
| 磁盘 / IO | 磁盘慢、日志写入阻塞 |
| 日志框架 | 批量写、异步队列 |
| 系统时间 | 日志时间不准(看起来像延迟) |
现象
console.log 在终端正常,在 systemd / Docker 中延迟原因
解决
export NODE_ENV=production
或强制无缓冲:
stdbuf -o0 node app.js
✅ 推荐:生产环境用日志库,不要只靠 console.log
常见库:
winstonpinobunyan原因
示例(pino)
pino({ sync: false })
✅ 解决:
pino({ sync: true })
或降低 flush 阈值
现象
原因
排查
iostat -x 1
✅ 解决:
现象
原因
解决
[Service]
StandardOutput=journal+console
或:
journalctl -f -u your-service
现象
console.log(obj) 显示的是“后面修改后的值”原因
✅ 解决:
console.log(JSON.stringify(obj))
现象
原因
排查
date
timedatectl
✅ 解决:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
你可以按顺序排查:
console.log?你可以直接贴出:
我可以给你精确到配置级别的解决方案。