温馨提示×

linux js日志如何排查慢

小樊
46
2026-09-29 17:22:55
栏目: 编程语言

在 Linux 环境下排查 Node.js(或前端 JS 服务)日志中的“慢”问题,通常可以从日志分析、系统监控、代码级定位三个层面来做。下面按实用顺序给你一套排查思路。


一、先确认“慢”的表现

先明确是哪种慢:

  • 接口响应慢(HTTP 请求耗时高)
  • 定时任务 / 脚本慢
  • 页面渲染慢(前端)
  • CPU / 内存高导致整体慢

不同场景排查方式不同。


二、从 JS 日志本身排查(最常见)

1. 看是否有耗时日志

如果你用的是常见框架:

Express / Koa

app.use((req, res, next) => {
  const start = Date.now();
  res.on('finish', () => {
    console.log(`${req.method} ${req.url} ${Date.now() - start}ms`);
  });
  next();
});

重点看:

  • 哪些 URL 耗时 > 500ms
  • 是否某一类接口普遍慢

2. 分析已有日志(Linux 命令)

假设日志格式:

2026-01-21 10:00:01 GET /api/user 1200ms

找出最慢的接口

grep "ms" app.log | sort -t' ' -kNF | tail -n 20

或:

awk '{print $NF, $0}' app.log | sort -rn | head

统计慢请求比例

grep -c "500ms" app.log

三、系统层面排查(Linux)

1. 看 CPU / 内存

top
htop

关注:

  • node 进程 CPU 是否长期 > 80%
  • 是否有内存泄漏(RES 持续增长)

2. 看 IO 是否瓶颈

iostat -x 1

如果:

  • %util 高
  • await 大

说明磁盘 IO 慢(常见于日志写入、数据库)


3. 网络是否慢

netstat -anp | grep node
ss -tnp

或抓包:

tcpdump -i eth0 port 3306

四、Node.js 专项排查慢

1. 开启 Node 性能日志

node --prof app.js

生成:

node --prof-process isolate-*.log > profile.txt

看哪个函数耗时最多。


2. 使用 clinic.js(强烈推荐)

npm install -g clinic
clinic doctor -- node app.js

它会自动分析:

  • CPU 瓶颈
  • 事件循环延迟
  • 内存问题

3. 检查事件循环延迟

const start = Date.now();
setInterval(() => {
  const delay = Date.now() - start - 1000;
  if (delay > 100) console.log('event loop delay', delay);
}, 1000);

五、数据库 / 外部调用(最常见慢因)

1. 慢查询日志(MySQL 示例)

SHOW SLOW QUERY LOG;

或:

mysqldumpslow -s t /var/log/mysql/slow.log

2. 外部 HTTP 调用超时

在 Node 中:

axios.get(url, { timeout: 2000 })

并打日志:

console.log('call api cost', Date.now() - start);

六、前端 JS 慢(如果是浏览器)

  • 使用 Chrome DevTools → Performance
  • 看:
    • Long Task
    • 渲染阻塞
    • 网络请求瀑布

七、总结排查顺序(推荐)

  1. 看 JS 日志 → 定位慢接口
  2. top / iostat → 看系统瓶颈
  3. node --prof / clinic → 定位代码
  4. 数据库 / 外部调用 → 最常见根因

如果你愿意,可以把:

  • 日志样例
  • Node 版本
  • 框架(Express / Koa / Nest 等)
  • 慢的具体表现

发给我,我可以直接帮你分析。

0 踩