Debian 上 Node.js 日志变慢通常不是 Node 本身的问题,而是日志写入路径、系统配置或外部依赖导致的。下面按常见原因从高到低给你梳理一下,并给出排查方法。
✅ 验证:
df -h
mount | grep log
✅ 解决:
rsyslog / filebeat 异步转发console.log 大量输出Node 的 console.log 是同步 + 阻塞的
console.log('xxx') // 实际上会写 stdout
在:
时,会明显变慢。
✅ 解决:
pino(最快)、winstonconst fs = require('fs');
fs.promises.appendFile('app.log', data);
Debian 默认用 systemd
Node 输出到 stdout → journald → 磁盘
journald 在高负载下会限速
✅ 验证:
journalctl -u your-node-service
✅ 解决:
# /etc/systemd/system/xxx.service
StandardOutput=file:/var/log/node/app.log
StandardError=file:/var/log/node/app.log
或禁用 journal 限速:
RateLimitIntervalSec=0
RateLimitBurst=0
文件越来越大:
✅ 验证:
ls -lh /var/log/node*
✅ 解决:
apt install logrotate
配置示例:
/var/log/node/*.log {
daily
rotate 7
compress
missingok
notifempty
}
Debian 上常见:
iostat -x 1
如果 %util 接近 100%,日志一定会慢。
✅ 解决:
某些日志库会:
如果 DNS 慢,日志看起来像“卡住”
✅ 验证:
getent hosts $(hostname)
# 1. 日志在哪
df -h /var/log
# 2. Node 是否阻塞
node -e "console.log('test')" > /dev/null
# 3. systemd 是否限速
systemctl show your-service | grep Limit
# 4. 磁盘 IO
iostat -x 1
✅ 生产环境这样配
pinologrotate如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一条。