生产者 发送消息 , rocketmq 返回成功,但mq未收到消息

 

报错日志

2019-02-26 13:39:16 WARN ReputMessageService - [BUG]logic queue order maybe 
wrong, expectLogicOffset: 2236400 currentLogicOffset: 2220900 Topic: 
event_bgdata_market QID: 0 Diff: 15500

 

这个问题,产生的场景是:broker根据commitlog中的消息去构建consumequeue,构建到其中一条消息时,预期在consumequeue中的offset为2236400,但实际上consumequeue才构建到的offset为2220900。下标比预期的小了15500,一个consumequeue中的索引大小为20,这条问题消息之前的15500/20=775条消息为什么没构建出来?这里需要排查下。







2019-02-12 04:02:07 WARN WriteSocketService - Offset for 
/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master/00000000000062914560
 not matched. Request offset: 1584589995, index: 290, mappedFileSize: 5242880, 
mappedFiles count: 5

2019-02-12 04:02:07 WARN WriteSocketService - findMappedFileByOffset failure.

java.lang.ArrayIndexOutOfBoundsException: 290

    at 
java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:368) 
~[na:1.7.0_80]

    at 
java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:377) 
~[na:1.7.0_80]

    at 
org.apache.rocketmq.store.MappedFileQueue.findMappedFileByOffset(MappedFileQueue.java:476)
 ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at org.apache.rocketmq.store.CommitLog.getData(CommitLog.java:144) 
[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at org.apache.rocketmq.store.CommitLog.getData(CommitLog.java:139) 
[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.DefaultMessageStore.getCommitLogData(DefaultMessageStore.java:696)
 [rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.ha.HAConnection$WriteSocketService.run(HAConnection.java:278)
 [rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]

2019-02-12 04:02:07 WARN WriteSocketService - Offset for 
/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master/00000000000062914560
 not matched. Request offset: 1584589995, index: 290, mappedFileSize: 5242880, 
mappedFiles count: 5




这个问题日志里提示也比较明显了:每个commitlog的大小为5242880,当前系统中最小的commitlog为00000000000062914560(这个文件为第62914560/5242880=12个文件),当前commitlog目录下一共有5个文件,正常情况下后面4个文件应该为连续的,因此下标应该分别为:68157440、73400320、78643200、83886080。但是此时,系统要加载的下标1584589995,应该在第1584589995/5242880=302个文件中。由于目前系统中最小的文件为第12个,因此代码中拿到302-12=290这个下标去取mappedFile,这里就抛了一个数组下标越界。

这个问题需要你先去机器上确认一下,/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master/下的commitlog文件是否有丢失,或者多了一个错误的文件。



在 2019-02-26 15:38:30,"国美金控投资有限公司-国美金控-信息技术中心-孔令超-13522338363" 
<[email protected]> 写道:

信息补充


----------------

All The Best!

孔令超
国美金融 /运维中心

Mobile:13522338363

E-Mail:[email protected]

Address:北京市朝阳区霄云路26号鹏润大厦B座8层

Floor 19, Unit B, PengRun building, NO.26, XiaoYun Road, Chaoyang District, 
Beijing, P.R.C. 100125



---------- Origin message ----------
>From:"国美金控投资有限公司-国美金控-信息技术中心-孔令超-13522338363" <[email protected]>
>To:[email protected]
>Subject:rocketmq问题排查
>Date:2019-02-26 15:16:22


您好:
       

 

rocketmq 版本  V4_0_0_SNAPSHOT   架构3主3从

配置文件 master

namesrvAddr=10.162.0.126:9876;10.162.0.127:9876;10.162.0.128:9876

brokerClusterName=Online-znyx

brokerName=broker-b

brokerId=0

deleteWhen=04

fileReservedTime=48

brokerRole=SYNC_MASTER

flushDiskType=ASYNC_FLUSH

listenPort=10110

storePathRootDir=/data/servers/apache-rocketmq-all/rocketmqlogs/store/

storePathCommitLog=/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master

mapedFileSizeCommitLog=5242880

useReentrantLockWhenPutMessage=true

waitTimeMillsInSendQueue=600

sendMessageThreadPoolNums=256

配置文件slave

namesrvAddr=10.162.0.126:9876;10.162.0.127:9876;10.162.0.128:9876

brokerClusterName=Online-znyx

brokerName=broker-c

brokerId=1

deleteWhen=04

fileReservedTime=48

brokerRole=SLAVE

flushDiskType=ASYNC_FLUSH

listenPort=10114

storePathRootDir=/data/servers/apache-rocketmq-all/rocketmqlogs/store/

storePathCommitLog=/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/slave

mapedFileSizeCommitLog=5242880

useReentrantLockWhenPutMessage=true

waitTimeMillsInSendQueue=600

sendMessageThreadPoolNums=256

 

问题1

生产者 发送消息 , rocketmq 返回成功,但mq未收到消息

 

报错日志

2019-02-26 13:39:16 WARN ReputMessageService - [BUG]logic queue order maybe 
wrong, expectLogicOffset: 2236400 currentLogicOffset: 2220900 Topic: 
event_bgdata_market QID: 0 Diff: 15500

 

 

2019-02-12 04:02:07 WARN WriteSocketService - Offset for 
/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master/00000000000062914560
 not matched. Request offset: 1584589995, index: 290, mappedFileSize: 5242880, 
mappedFiles count: 5

2019-02-12 04:02:07 WARN WriteSocketService - findMappedFileByOffset failure.

java.lang.ArrayIndexOutOfBoundsException: 290

    at 
java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:368) 
~[na:1.7.0_80]

    at 
java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:377) 
~[na:1.7.0_80]

    at 
org.apache.rocketmq.store.MappedFileQueue.findMappedFileByOffset(MappedFileQueue.java:476)
 ~[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.CommitLog.getData(CommitLog.java:144)[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.CommitLog.getData(CommitLog.java:139)[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.DefaultMessageStore.getCommitLogData(DefaultMessageStore.java:696)[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at 
org.apache.rocketmq.store.ha.HAConnection$WriteSocketService.run(HAConnection.java:278)[rocketmq-store-4.0.0-incubating.jar:4.0.0-incubating]

    at java.lang.Thread.run(Thread.java:745)[na:1.7.0_80]

2019-02-12 04:02:07 WARN WriteSocketService - Offset for 
/data/servers/apache-rocketmq-all/rocketmqlogs/store/commitlog/master/00000000000062914560
 not matched. Request offset: 1584589995, index: 290, mappedFileSize: 5242880, 
mappedFiles count: 5

 

烦请帮忙给点排查思路。

----------------

All The Best!

孔令超
国美金融 /运维中心

Mobile:13522338363

E-Mail:[email protected]

Address:北京市朝阳区霄云路26号鹏润大厦B座8层

Floor 19, Unit B, PengRun building, NO.26, XiaoYun Road, Chaoyang District, 
Beijing, P.R.C. 100125
  • ... 国美金控投资有限公司-国美金控-信息技术中心-孔令超-13522338363
    • ... 叶茂伟

Reply via email to