【测试环境】
【 OB 】
【 4.2.1】
【问题描述】
通过flink cdc 监听一张OB大表(存量数据大概2.5亿行),写入到另一张OB表里,
写入的并发设置的很高的时候(‘sink.parallelism’=‘200’),oblogreader进程会经常挂掉
查看日志显示:
【测试环境】
【 OB 】
【 4.2.1】
【问题描述】
通过flink cdc 监听一张OB大表(存量数据大概2.5亿行),写入到另一张OB表里,
写入的并发设置的很高的时候(‘sink.parallelism’=‘200’),oblogreader进程会经常挂掉
查看日志显示:
修改方式:
修改内存大小:alter system set memory_limit=‘XXG’;
通过调整租户资源规格
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000508360#2-title-调整资源规格
看了下 没有发现内存不够的情况,
是怎么看的没有内存不足的情况,日志里的信息是租户的内存已经写满了,即使租户内存比较大,但是写入速度比转储速度快的话还是可能会有这种情况
那这个确实有可能,这个有办法准确看到是不是么。如果是这样情况的话,有参数能优化吗。
我是根据上面那个老师给我的SQL看的free mem值还有很多
[quote=“chris-sun, post:6, topic:35606213”]
写入速度比转储速度快
[/quote]还有一个问题就是为什么这样只对oblogreader进程有影响,存量数据却没有影响
这个对于写入应该都有影响
但是存量数据是正常写入的,有影响的只是logreader进程断掉了。这个怎么弄啊
这里显示的已经冻结了43次了
并发调整的小一些呢
现在问题就是想把并发弄上去,
现在看起来 Flink cdc 应该没有考虑 OB 的内存模型的逻辑,之前用其他数据同步工具的时候,如果有 OB 的插件的话(比如 datax), 会读取内存的值,然后判断是否要继续写入,如果代码没有类似的逻辑,那么还是有可能内存爆的
现在的链路是怎样的呢,存量的数据已经同步完了吗,还是仍然在同步的,如果只是增量数据的话应该两个租户一样配置就可以
如果写入端要一直追数据,只能调大内存,调大转储次数,调小冻结的阈值,但是具体设置多少值合适,这个并不能准确给出来
存量的没有同步完,这个任务刚起来oblogreader就会挂掉,但是同步存量由于走的是obproxy没有影响,等同步完存量的再去同步增量的时候任务就会结束