队列积压
一句话:任务队列处理速度低于进入速度,导致邮件、导入、生成、支付回调等任务越堆越多。
它是什么
队列积压常见于异步任务系统,比如AI批量生成、邮件发送、视频转码、订单同步、Webhook处理。它的本质是生产速度大于消费速度,可能由worker没启动、任务执行太慢、外部API限流、数据库慢查询或重试风暴造成。
适合干什么
- 做异步任务的开发者
- SaaS和电商系统维护者
- AI批量生成任务项目
- 遇到后台任务卡住的人
不适合干什么
- 没有使用队列的项目
- 只是单个请求慢但没有任务堆积
- 完全无法查看日志和队列状态
- 涉及生产事故但没有权限处理
普通人怎么用
- 查看队列长度和最老任务时间
- 确认worker是否运行
- 检查最近失败任务和重试次数
- 找出最慢任务类型
- 临时扩容worker或暂停入口
进阶用户怎么用
- 为不同任务设置优先级队列
- 限制失败重试次数和退避时间
- 把大任务拆成小任务
- 监控队列长度、处理耗时和失败率
常见误区
- 只重启服务不看失败原因
- 无限重试导致更大积压
- 所有任务共用一个队列
- 没有死信队列和告警
和相似工具的区别
- 队列积压 vs 请求超时:请求超时发生在同步请求链路,队列积压发生在后台异步任务链路。
- 队列积压 vs API限流:API限流可能是队列积压的原因之一,但队列积压还可能来自worker、数据库或任务设计。
入门步骤
- 看队列长度
- 查worker
- 看失败任务
- 定位慢任务
- 临时扩容
- 修复根因
推荐工具(第三方)
BullMQ、Redis、Celery、Sidekiq、Sentry