MongoShake icon indicating copy to clipboard operation
MongoShake copied to clipboard

【建议】2.7.4 版本优化lsn_ckpt空闲刷新逻辑

Open jiejieling opened this issue 2 years ago • 9 comments

建议 2.7.4版本的lsn_ckpt空闲刷新逻辑与2.6.x版本保持一致。2.7.x版本的lsn_ckpt 只有在有数据同步时才会刷新,不利于延迟监控,建议改为空闲时期也会定时刷新lsn_ckpt

mongoshake版本:2.7.4

jiejieling avatar Jun 15 '22 13:06 jiejieling

你有日志支撑你的说法吗?哪里不一样了?

zhangst avatar Jun 16 '22 01:06 zhangst

2.6.4日志: [2022/06/15 23:59:50 CST] [INFO] [name=cus-es-01_sh_1, stage=incr, get=91178173, filter=290321, write_success=90887852, tps=0, ckpt_times=108747, lsn_ckpt={7109496318967414785[1655308604, 1], 2022-06-15 23:56:44}, lsn_ack={7109436777835790347[1655294741, 11], 2022-06-15 20:05:41}]] [2022/06/15 23:59:55 CST] [INFO] [name=cus-es-01_sh_1, stage=incr, get=91178174, filter=290321, write_success=90887852, tps=0, ckpt_times=108747, lsn_ckpt={7109496318967414785[1655308604, 1], 2022-06-15 23:56:44}, lsn_ack={7109436777835790347[1655294741, 11], 2022-06-15 20:05:41}]]

2.7.4日志: [2022/06/15 23:59:50 CST] [INFO] [name=cus-mg-10_sh_1, stage=incr, get=17186, filter=769, write_success=16417, tps=0, ckpt_times=732, lsn_ckpt={7109459601292001281[1655300055, 1], 2022-06-15 21:34:15}, lsn_ack={7109458634924359681[1655299830, 1], 2022-06-15 21:30:30}]] [2022/06/15 23:59:55 CST] [INFO] [name=cus-mg-10_sh_1, stage=incr, get=17186, filter=769, write_success=16417, tps=0, ckpt_times=732, lsn_ckpt={7109459601292001281[1655300055, 1], 2022-06-15 21:34:15}, lsn_ack={7109458634924359681[1655299830, 1], 2022-06-15 21:30:30}]]

通过日志可以看出,同样是空闲时间, 2.6.4的lsn_ckpt总是不断向now()靠近, 但2.7.4的lsn_ckpt与lsn_ack 保持一致,lsn_ack是最后一次更新的时间,所以推断2.7.4的lsn_ckpt在空闲时刻,是不会进行定时刷新的

jiejieling avatar Jun 16 '22 02:06 jiejieling

你这两个版本的incr_sync.mongo_fetch_method 配置一样吗? 2.6.4配置是oplog,2.7.4配置是changeStream,是这样吗?

zhangst avatar Jun 16 '22 02:06 zhangst

是的,跟这个有关系吗? 有关系的话 我都改成change_stream测试一下

jiejieling avatar Jun 16 '22 02:06 jiejieling

有关系的,两个版本ckpt更新的逻辑是一样的。有oplog才会更新,无论是业务的oplog还是noop oplog。 不一样的地方是,oplog方式可以获取noop oplog,ChangeStream方式获取不到noop oplog(被MongoDB自身过滤掉了)。 所以oplog会更新,ChangeStream不会更新。 这个现在维持现状,等确定好的优化逻辑。

zhangst avatar Jun 16 '22 02:06 zhangst

了解,我测试下,谢谢

jiejieling avatar Jun 16 '22 02:06 jiejieling

我测试了下, 2.7.4 oplog 模式下,还是存在这个问题 mongo 版本:4.4.14 collector.log

jiejieling avatar Jun 16 '22 13:06 jiejieling

我理解你的问题是lsn_ckpt没有更新,请用debug日志级别复现下,并传个日志文件

zhangst avatar Jun 16 '22 14:06 zhangst

collector .log

这个开了Debug后 刚重启服务后的日志

jiejieling avatar Jun 16 '22 15:06 jiejieling

2.8.3新版本待发布,请再尝试

zhangst avatar Mar 22 '23 07:03 zhangst