腾讯云云数据库 MongoDB 一主两从 3 个副本集, 数据同步延时超过 2 秒

112 天前
 88JackLi88

使用腾讯云的云数据库, 一主两从 三个副本集,MongoDB 3.2 版本, 配置 2 核 4G, 用户数据 2000 条左右, 更新单个用户的数据后, 过了 2 秒左右查询操作 使用 read('secondPrefered'), read('nearest') 查到的数据大概率是 2 秒前未更新的状态.

虽然可以通过逻辑去区分读主读从, 但是业务写起来就相当的费劲了.

有使用过的朋友吗, 怎么能做到数据同步延时在 50ms-100ms 内?

674 次点击
所在节点    问与答
4 条回复
sunny352787
112 天前
这事你得给他们提工单了吧,这延迟肯定不对劲
tencentcloud
112 天前
您好,当在副本集情况下,向节点写入数据,并记录 oplog. 从节点通过 oplog 进行数据同步,最终保证副本集中的各个节点的数据一致性,这个默认是异步同步,因此会有一定延迟。一般的主从延迟是在毫秒级别,如果出现延迟较大的情况,可以根据下面的排查思路进行分析:
1 、如果实例只是偶尔出现延迟,可以查看对应时间点实例的指标是否正常、例如 CPU 、网络流量指标等是否有跑高,主节点负载高就会导致从节点通过主节点 oplog 获取增量数据有延迟,最终反应出来落到从节点就会出现延迟。
2 、排查延迟过程,实例是否在备份过程,早期 3.2 版本没有专门设置 hidden 节点,备份过程会导致从节点负载上升,从而影响数据回放,这个建议升级到更高的实例版本,并设置 hidden 节点避免备份影响。
3 、业务是否存在大批量的写入逻辑,可以查看对应主从延迟的时间点是否是业务高峰期,从节点回放数据是有效线程回放,如果写入太大,是会导致延迟上升,这个时候建议升级更大的实例规格。
4 、如果业务自身在没有写入,或者写入很少的情况下,监控偶尔看到出现延迟毛刺,这个是由于监控拨测机制和原生的计算机制引入的,mongodb 副本集中每个节点会记录 optime ,即最后一次修改数据库操作发生的时间,延时的计算为主节点与备节点之间 optime 的差导致。

如出现非上述情况,需要根据实际情况进行分析,建议您可以提交腾讯云工单进行反馈,我们会协助您分析解决,感谢您对腾讯云支持与理解。
88JackLi88
111 天前
@sunny352787 已提工单, 配合他们跑了几次测试用例, 服务端代码 find().read('secondary') 查询, 总是在第 3 秒的时候 次才看到同步完数据. 他们那边却看不到延迟, 着实有点无语了.
也有可能是数据库版本太低了, 后面可能会考虑升级版本再看是否有这个情况
88JackLi88
111 天前
@tencentcloud 已提工单, 感谢支持.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX