积压这件事,通常是先有迹象、后有事故。头几天只是回复慢了一点,接着买家说「你怎么才回」,再后来发现有几条消息干脆没回。等你想查的时候,消息已经排了一长队,人工一上来就淹了。这篇给一套从外到内的排查顺序,以及处理积压时容易踩的坑。## 先确认是不是真的积压看延迟趋势。消息接收时间和回复时间戳的差值,如果从几秒涨到几分钟并持续上升,就是积压,不是偶发卡顿。数漏回。用发送记录和回复记录做差集,看看有多少条消息在时间窗口内没有任何回复动作。看队列长度。多数方案能显示待处理消息数。数字只涨不落,说明消费能力跟不上生产速度。看分布。积压是全量,还是集中在某几个账号、某几个群、某个时间段。集中在群发之后,通常是发送限速;集中在某一个号,通常是那个号出了问题。## 从外到内五个检查点账号状态。号有没有掉线、被限制发送、登录过期。这一步要先看,因为账号异常会让后面的排查全部失真。网络与设备。常开的电脑有没有休眠、断网、被系统回收资源。设备一睡,回复就停,买家看到的还显示「在线」。进程是否假死。程序还在,日志不写,消息进来不处理。先看日志时间戳停在什么时候。规则配置。有没有新加了大量规则、出现循环触发、或者某条规则把消息又打回自己。配置错误造成的积压增长很快。并发与限流。一次触发太多会话、群发任务和自动回复抢同一个发送通道,被平台限速,消息就堵在发送队列里。## 处理动作:先止血,再分流暂停「生产端」。先把群发、营销推送、老客唤醒这类主动发消息的规则停掉。它们的优先级低于客服回复,却往往占着通道。限流与排队。给发送动作设速率上限,按会话优先级排队:正在对话的排在前面,批量通知排后面。分批补发。积压的消息不要一次性重发。按时间倒序或按会话分组,分批进行,并跳过已经回过的那部分——重复回复比晚回复更让人反感。不要盲目重启。重启能清掉假死的进程,代价是内存里的待发队列可能丢失、部分消息会被重复发送、正在进行的多轮上下文可能断掉。重启之前先确认队列是否落盘、哪些消息已经发出。## 积压之前就能做的三件事设阈值告警。延迟超过日常水平、队列长度超过上限、账号掉线,都要能推送到人。等到在聊天里发现问题,已经晚了一步。给主动消息设优先级。群发、唤醒、通知这类任务排在客服回复之后,必要时能自动暂停。保住对话质量比发出通知重要。留一条人工通道。自动化堵住的时候,人工要能直接进会话,别让所有消息都等着队列慢慢消化。定期演练。每月挑一个低峰时段,故意造一点小积压,走一遍排查流程。真出事的时候,手就不会生。## 恢复之后要核对四件事一、积压窗口内的漏回清单,安排人工逐条补;二、重复发送的清单,避免同一个买家收到两条相同回复;三、重启前后的上下文是否衔接,多轮对话有没有断在半路;四、把这次的触发条件写进监控:延迟阈值、队列上限、账号掉线告警。用带发送队列与日志的方案,积压时能直接看到排队情况,处理起来不用靠猜;日常把告警阈值设好,比事后救火省力得多。## 小结积压的排查顺序是账号、设备、进程、规则、并发;处理顺序是先停生产端、再限流排队、最后分批补发。重启是最后的选择,不是头一个动作。记住一个判断:延迟持续上升才是积压,一次慢半拍只是波动。## 参考文章- 自动回复漏回消息怎么补救- 自动回复的延迟怎么设计
微信自动回复消息积压了怎么办?从队列到并发的一次排查