后台作业队列卡住了?重启 Node worker 之前我会检查什么
上个月我负责一个小型的内部管理应用的值班工作,支持团队联系我,说客户导出的文件没有显示。UI 上只显示"已排队(queued)",所以 Slack 里的第一个建议就是重启 Node worker。我以前这样做过,重启后确实能管用十分钟,但这通常掩盖了真正的问题。 我首先没有去看总数,而是按状态拆分了队列。在 BullMQ 中,waiting(等待中)、active(执行中)、delayed(延迟中)、failed(失败)和 stalled(停滞)代表着完全不同的含义。这些作业并没有真正卡在等待中。它们大多数处于延迟状态,且退避(backoff)值在不断增加。CPU 使用率很低,Redis 内存看起来正常,worker 进程也在正常发送心跳,所以盲目重启并不能解决什么问题。 接下来的检查是查看作业负载以及第一次失败前后的 worker 日志。下游供应商的 API 在其批处理窗口期间开始返回…