pid:60 nid:2 exception:canal:yoolifin_ yoolifin:com.alibaba.otter.canal.parse.exception.CanalParseException: java.lang.OutOfMemoryError: Java heap space Caused by: java.lang.OutOfMemoryError: Java heap space at java.lang.String.substring(String.java:1969) at com.alibaba.druid.sql.parser.Lexer.subString(Lexer.java:134) at com.alibaba.druid.sql.parser.Lexer.scanString2(Lexer.java:1045) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlLexer.scanString(MySqlLexer.java:406) at com.alibaba.druid.sql.parser.Lexer.nextTokenValue(Lexer.java:388) at com.alibaba.druid.sql.parser.SQLStatementParser.parseValueClause(SQLStatementParser.java:3229) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:2514) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:47) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:165) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:70) at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:473) at com.alibaba.otter.canal.parse.inbound.mysql.ddl.DruidDdlParser.parse(DruidDdlParser.java:47) at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsQueryEvent(LogEventConvert.java:300) at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:122) at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:66) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser.parseAndProfilingIfNecessary(AbstractEventParser.java:337) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3$1.sink(AbstractEventParser.java:184) at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:145) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:220) at java.lang.Thread.run(Thread.java:745)
原提问者GitHub用户 luyee
dump出来发现buffer里边Event实例有13332个,总大小达6.8G多.
起初慢慢增大Xmx到8192m了,修改了pipeline的batchSize,还是会出现OOM。
其实应该修改canal的参数(内存存储buffer记录数)。这个默认是32768, 可以按比例设置小一些,这个只对当前canal有效
原回答者GitHub用户 luyee
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。