在 Linux 上运行 JavaScript(通常是 Node.js)时,如果出现**“日志耗时高 / 写日志很慢”,一般不是 JS 本身慢,而是日志写入链路**出了问题。下面按常见原因从高到低说明。
很多日志库默认是同步写入:
fs.appendFileSync('app.log', log)
✅ 解决:
例如:
console.log 大量调用对比:
console.log:慢winston:中等pino:最快(结构化、零格式化)✅ 推荐:
npm i pino
生产环境开 debug:
✅ 解决:
info 或 warnLinux 上:
iostat -x 1
如果:
%util 接近 100%await 很高说明:
✅ 解决:
没有 log rotate:
✅ 解决:
logrotate
或日志库自带 rotate
在容器中:
✅ 解决:
logger.info(JSON.stringify(bigObj))
✅ 解决:
如果你看到:
可能是:
# 看磁盘
iostat -x 1
# 看进程 IO
pidstat -d -p <pid> 1
# 看日志大小
du -sh /var/log/*
# Node 火焰图
node --prof
✅ 使用:
Linux 上 JS 日志耗时高,90% 是“同步写磁盘 + 日志量过大 + 日志库太重”。
如果你愿意,可以贴:
我可以帮你精确定位。