Node.js 中使用 Worker Threads 处理 CPU 密集型任务的正确姿势
线上服务有个图片处理接口,用户上传图片后需要生成多张不同尺寸的缩略图。之前一直用 sharp 在请求主线程里同步处理,平时 QPS 不高时表现正常,但一到批量上传或者大图场景,接口响应时间飙升到好几秒,期间整个 Node.js 进程几乎卡死,其他请求全部排队。排查后发现是 CPU 密集操作阻塞了事件循环,sharp 底层虽然用了 libvips,但某些同步 API 和编码过程依然会占用主线程。Node.js 官方提供的 worker_threads 模块可以把这类任务丢到独立线程执行,避免阻塞主线程,但实际...