今天运营同事报告了一个问题,有用户使用兑换码兑换课程后,在课程列表里看不到课。
首先排查日志,发现兑换课程的MQ消息发送出去了,但没有被消费,而且一次都没有投递。
进入阿里云控制台查看MQ消息队列,发现堆积了一千多条消息。
查看Consumer服务,负载很低,服务正常运行。
查看服务日志,几分钟前才消费了一条消息。对比这条消息和其中积压的一条消息,Topic相同,Tag相同。说明不是MQ配置发生了变化,且当前服务能正常消费消息。但积压的消息为什么消费不了呢?
查看消息开始积压的时间点是16号,回想起前几天这台物理机上有个服务发生过线程池耗尽的问题,时间点和消息开始积压时间点吻合。
推测是线程池耗尽占用了过多的物理资源,影响到了Consumer服务,物理机恢复后,Consumer服务没能完全恢复过来。
于是重启Consumer服务,积压的消息就被处理掉了。