RocketMQ重复消费问题排查历程

版本:4.2.0,源码:class文件

问题描述:

生产环境日志目录使用的默认配置,MQ启动用户的家目录可用空间设置的大小有限制,随着时间的推移可用空间不足,决定修改日志目录,MQ的logback_*.xml配置的默认路径${user.home}全局替换为/data,然后重启MQ,生产环境使用的双master,分别是19和20服务器,运维在重启的时候先停止的19号服务器的MQ一分二十秒之后启动MQ,五分钟之后停止20号服务器MQ,再启动20号服务器MQ。

启动使用的命令:

nohup sh mqnamesrv &

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties /dev/null 2>&1 &

19服务器指定的broker-a.properties,20服务器指定的broker-b.properties

消费者没有重启

重启之后直接就是重复消费,监控到服务器CPU飙升之后,就开始排查问题

由于只修改了日志的配置,所以排查起来很困难

 

经过几天的看源码,发现导致重复消费有一种可能:

数据存储目录被修改,这种情况比较特殊,基本不大可能会存在这种问题,但是吧好不容易找到一个可能性就要排查,联系运维查看配置和查找目录,最终发现生产环境的store目录只有一个,基本可以排除这种可能性,想想也对,这种几率极其小,必须满足修改前后的存储目录都有消息,而且消息的offset消费进度还不一样,加上运维操作不当,而且生产环境的MQ的存储目录一般也不可能会改。

 

继续排查吧,让运维导出生产环境的日志,比对了一下重启前的那次启动和重启那次的配置有点不一样,

19号服务器之前启动指定的配置文件时broker-b.properties,重启指定的配置文件是broker-a.properties

20号服务器之前启动指定的配置文件时broker-a.properties,重启指定的配置文件是broker-b.properties

broker-a.properties和broker-b.properties的唯一区别就是brokerName不一样,一个指定的是broker-a,一个指定的是broker-b,不太清楚这个brokerName会不会产生什么影响。继续看MQ日志,发现很多告警日志,日志文件位于*\rocketmq\broker\logs\rocketmqlogs,文件:broker.log。

告警日志:

2021-01-07 19:30:09 INFO PullMessageThread_11 - the request offset: 143072 over flow badly, broker max offset: 143069, consumer: /*.*.*.25:16382
2021-01-07 19:30:09 INFO PullMessageThread_12 - the request offset: 143071 over flow badly, broker max offset: 143069, consumer: /*.*.*.25:16382
2021-01-07 19:30:09 INFO PullMessageThread_13 - the request offset: 143072 over flow badly, broker max offset: 143069, consumer: /*.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_15 - the topic UCCB-DCA_RDA-FILE not exist, consumer: *.*.*.22:57742
2021-01-07 19:30:09 ERROR PullMessageThread_15 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16382
2021-01-07 19:30:09 INFO PullMessageThread_15 - the request offset: 143071 over flow badly, broker max offset: 143069, consumer: /*.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_14 - the topic UCCB-DCA_RDA-FILE not exist, consumer: *.*.*.22:57742
2021-01-07 19:30:09 INFO PullMessageThread_16 - the request offset: 143072 over flow badly, broker max offset: 143071, consumer: /*.*.*.25:16382
2021-01-07 19:30:09 ERROR PullMessageThread_14 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16382
2021-01-07 19:30:09 INFO PullMessageThread_14 - the request offset: 143072 over flow badly, broker max offset: 143071, consumer: /*.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_17 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_17 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16382
2021-01-07 19:30:09 ERROR PullMessageThread_17 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_17 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16382
2021-01-07 19:30:09 ERROR PullMessageThread_17 - the topic UCCB-DCA_REA-INPUTDATA not exist, consumer: *.*.*.25:16384
2021-01-07 19:30:09 ERROR PullMessageThread_17 -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值