开发者社区> 问答> 正文

canal destination 日志中打印内存溢出:parse events has an er

[admin@iZ2ze1fj7q5onlv7fznya0Z 01]$ tail -f 01.log {"identity":{"slaveId":-1,"sourceAddress":{"address":"","port":3301}},"postion":{"gtid":"","included":false,"journalName":"mysql-bin.000002","position":217043434,"serverId":100,"timestamp":1554980641000}} 2019-04-11 19:10:39.300 [destination = 01 , address = /:3301 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000002,position=217043434,serverId=100,gtid=,timestamp=1554980641000] cost : 457ms , the next step is binlog dump 2019-04-11 19:11:14.298 [destination = 01 , address = /:3301 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /:3301 has an error, retrying. caused by com.alibaba.otter.canal.parse.exception.CanalParseException: java.lang.OutOfMemoryError: Java heap space Caused by: java.lang.OutOfMemoryError: Java heap space 2019-04-11 19:11:14.441 [destination = 01 , address = /:3301 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:01[com.alibaba.otter.canal.parse.exception.CanalParseException: java.lang.OutOfMemoryError: Java heap space Caused by: java.lang.OutOfMemoryError: Java heap space ] 2019-04-11 19:11:15.544 [destination = 01 , address = /***:3301 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - parse events has an error java.lang.OutOfMemoryError: Java heap space

这是 canal destination 的日志,请问下内存溢出的原因是什么?可以怎么处理?

canal版本为1.1.2

原提问者GitHub用户just-JL

展开
收起
古拉古拉 2023-05-08 12:33:54 248 0
2 条回答
写回答
取消 提交回答
  • 调低canal解析的ringbuffer Size

    原回答者GitHub用户agapple

    2023-05-09 17:38:26
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    当 Canal 的 destination 日志中出现 "parse events has an er" 的错误信息时,通常是由于 Canal 在解析事件时发生了内存溢出。

    这种情况可能是由于以下原因导致的:

    Canal 配置文件中的 canal.instance.memory.max 参数设置过小,无法满足 Canal 处理大量数据的需求。可以尝试增加该参数的值来解决此问题。

    Canal 与数据库之间的连接数过多,导致内存占用过高。可以尝试优化数据库连接池或者减少 Canal 与数据库之间的连接数来解决此问题。

    Canal 处理的数据量过大,超出了机器内存的限制。可以尝试将数据拆分成多个部分进行处理,或者使用分布式部署的方式来解决此问题。

    Canal 代码中存在内存泄漏的问题,导致内存不断增加。可以对 Canal 代码进行排查和优化,确保代码中不存在内存泄漏的问题。

    总之,当 Canal 的 destination 日志中出现 "parse events has an er" 的错误信息时,需要仔细分析日志,并结合实际情况采取相应的措施来解决问题。

    2023-05-08 14:02:08
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载