Node.js 中使用 worker_threads 处理 CPU 密集型任务时,为什么你的进程还是卡住了?
线上一个用 Node.js 写的图片处理服务,最近加了一个生成缩略图的功能,用的是 sharp 库。本地跑得好好的,部署到一台 2 核的容器上之后,调用缩略图接口时整个服务响应变得极慢,连健康检查都开始超时。排查后发现 sharp 虽然底层是 C++,但解码和编码阶段仍然占用大量 CPU,而 Node.js 主线程被这些同步计算拖住,事件循环迟迟得不到调度。很多开发者知道 worker_threads 可以用来卸载 CPU 负载,但真正用起来时还是会遇到进程卡死、内存暴涨、worker 泄漏等问题。这篇文章...