Node.js 中使用 worker_threads 处理 CPU 密集型任务时,为什么你的接口还是卡住了?
有一个后台管理项目需要导出十万条订单数据,每一条都要做金额格式化、时间转换和状态映射。最开始直接在请求处理函数里写了个 for 循环,本地测试几百条数据没问题,上线后只要有人点导出,整个 Node 服务就像被冻住一样,所有接口的响应时间都飙到好几秒。后来把导出逻辑挪到 worker_threads 里,接口是不卡了,但导出任务本身慢得离谱,还偶尔报 ERR_WORKER_OUT_OF_MEMORY。排查后发现,问题不在于用没用 worker,而在于数据在主线程和 worker 之间来回传递的方式,以及 worker 的创建和销毁频率。这篇文章从实际场景出发,梳理 worker_threads ...