Node.js 中使用 worker_threads 处理 CPU 密集型任务:从阻塞到并行的实践
最近在做一个图片批量处理的工具,需要把用户上传的几十张图片生成不同尺寸的缩略图。用 sharp 库做 resize 本身很快,但每张图都要重新计算像素、做滤波、压缩,单张 4000x3000 的图转成 200x200 要花 300ms 左右。一开始我直接把循环写在主线程里,结果前端调用接口上传 20 张图后,整个 Node 服务卡住将近 6 秒,健康检查接口都超时了。排查后发现是 CPU 密集任务把事件循环堵死了。Node.js 默认只有一个主线程执行 JS,虽然 I/O 靠 libuv 异步,但图像处理、加密、大 JSON 序列化、复杂计算这些操作会长时间占用 CPU,阻塞其他请求。本文从实...