otter 双A同步延迟大,如何提高吞吐量和降低数据同步延迟

zxlwwiss  于 2022-10-25  发布在  其他
关注(0)|答案(3)|浏览(662)

同步100W行数据,延迟达到10多分钟。调整了canal的buffer大小,也调整了同步的并发数及载入线程数 ,也调整了node节点的jvm,但是效果都不明显。还有其他参数可以调整么 ???

piah890a

piah890a1#

怎么会这么慢呢?

  1. 看并发情况,比如每秒大概多少,默认参数otter大概能支持1w左右,5个双向同步
  2. 延迟参考看下:1. 每批次处理数据量,(处理多意味着备库应用慢)2. 并发量(并发高如果单批次处理少会处理的慢)3. 堆内存情况(是否有内存溢出导致gc了)
  3. 相关的参数:1. canal的buffer大小,也就是canal缓存的数据,默认32M够了 2. 并发度,默认5处理5个批次 3. otter处理批次大小 最多一批多少条,默认6000(5个库*1200并发)4. 获取批次超时时间,默认-1即时获取, 如果并发较大,建议调成100-300ms, 如果网络延迟高,也建议调大就行 5. Jvm检查下... 6. mysql receiverbuffer, 默认16k,这个可能也还好
3phpmpom

3phpmpom2#

老哥有没有遇到过延迟几十个小时的情况,我的表才几万数据,第一天的时候只是延迟1小时,后面什么都做,延迟时间居然达到了90多小时,不知道怎么优化。。。

llmtgqce

llmtgqce3#

怎么会这么慢呢?

  1. 看并发情况,比如每秒大概多少,默认参数otter大概能支持1w左右,5个双向同步
  2. 延迟参考看下:1. 每批次处理数据量,(处理多意味着备库应用慢)2. 并发量(并发高如果单批次处理少会处理的慢)3. 堆内存情况(是否有内存溢出导致gc了)
  3. 相关的参数:1. canal的buffer大小,也就是canal缓存的数据,默认32M够了 2. 并发度,默认5处理5个批次 3. otter处理批次大小 最多一批多少条,默认6000(5个库*1200并发)4. 获取批次超时时间,默认-1即时获取, 如果并发较大,建议调成100-300ms, 如果网络延迟高,也建议调大就行 5. Jvm检查下... 6. mysql receiverbuffer, 默认16k,这个可能也还好

大佬,目前我这边测试国外机房同步国内mysql, 只支持每秒5k的update, 更新1w的时候2-3小时之后就开始延迟,跑一夜第二天延长能到6个小时,目前目的mysql 和node是4c8g,出了磁盘写入比较高(一般20~40M/s)其他指标都正常, 尝试修改Pipeline或者canal配置都没有显著降低延迟的效果,请问你这边测试的情况能到什么程度

相关问题