275 字
1 分钟
Node.js 事件循环避坑指南:千万别阻塞主线程!

你的 Node.js 为什么慢?#

很多新手以为 Node.js 是单线程的,所以不能处理高并发。错! Node.js 慢通常只有一个原因:你在主线程里干了重活

经典的死法#

app.get('/compute', (req, res) => {
// 这是一个同步死循环
const result = heavyComputation();
res.send(result);
});

heavyComputation() 执行时,Event Loop 被卡住了。 这时候,别的用户连个 Ping 都发不进来。整个服务器对外界是“未响应”状态。

哪些操作会阻塞?#

  1. 大 JSON 解析JSON.parse(bigString) 是同步的。如果字符串有 50MB,你的服务器就得卡几百毫秒。
  2. 正则回溯:写得烂的正则表达式在匹配长文本时,计算量是指数级的。
  3. 同步文件 IOfs.readFileSync。永远别在请求处理里用这个!

怎么救?#

  1. Worker Threads:把计算任务扔给子线程。
  2. 流式处理 (Stream):别一次性读入大文件,用 Stream 一点点流过去。
  3. 别用 Node.js 做 CPU 密集型任务:让 Go 或 Rust 去做,Node.js 只负责粘合。

记住:Node.js 是个优秀的前台经理,但他不是搬运工

Node.js 事件循环避坑指南:千万别阻塞主线程!
https://www.oferry.com/posts/a37/
作者
晨平安
发布于
2026-02-06
许可协议
CC BY-NC-SA 4.0
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00