数据同步canal 疑点——内存

本文探讨了Canal内存管理的实现,采用环形数组提高效率,避免频繁内存分配。在遇到Canal因内存耗尽导致进程崩溃的情况时,建议调整`canal.instance.memory.buffer.size`参数减小内存占用。Canal在内存不足时会等待,数据暂存于TCP缓存区,若未及时消费,可能会导致进程被kill。通过ack确认,能保证同步数据的安全并定期更新到ZK。
摘要由CSDN通过智能技术生成

       canal 内存实现的方式是环形数组,这个是非常高效的,可以减少内存分配,在堆栈中分配内存挺耗时间的。何况,如果不使用环形数组的话的,消息有点折扣,很多开源的项目有实现了类似的环形数组。
       在公司的某一段时间,在日常批量更改时间,发现 canal 挂掉了,当初得到的原因是:内存消耗完毕,被 Linux 干掉了 canal 进程了。可以在 /var/logs 目录下,找找相应的文件就知道了。
       canal 内存的分配模型如下:
       这里写图片描述

       在使用 canal 的时候,记得 把 canal.instance.memory.buffer.size 属性的值设置小点。这个是前提哦!!!不然,海量数据过来的话,就有问题了。canal 是吃内存的。
       canal 是吃内存的,万一海量数据涌过来的话,canal 是不是挂掉了?很大情况下不会的!且看一下分析。
       这里写图片描述
       – 这个是我自己写的分析注释。哈哈哈!!
       我们可以点击 eventStore.tryPut(events) 这个进去看看。点击进去的时候,写着 如下箭头指示的类哦!
      

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值