在 Node.js 里正确使用 Worker Threads 处理 CPU 密集任务
线上有个图片元数据解析接口,用户上传图片后需要读取 EXIF、生成缩略图并计算感知哈希。最初这些操作直接写在 Express 的 route handler 里,本地测试没问题,部署到 2C4G 的容器后,只要同时有 5 个以上请求,整个服务就会卡住,连健康检查都超时。原因并不复杂:Node.js 的主线程既要处理 HTTP 请求,又要执行 sharp 的同步解码和图像计算,事件循环被长时间占用,后续的 I/O 回调全部排队。很多人会想到 child_process 或 cluster,但前者进程间通信开销大,后者适合横向扩展而不是把单个重任务挪走。Worker Threads 是更合适的方案...