开发者社区> 问答> 正文

com.alibaba.otter.canal.protocol.exception.CanalCl

2018-04-23 15:05:05.780-[ERROR]-[Thread-0]-com.clickplus.canal.AbstractCanalClientTest:151-process error! com.alibaba.otter.canal.protocol.exception.CanalClientException: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.ack(SimpleCanalConnector.java:257) ~[canal.client-1.0.4.jar:na] at com.clickplus.canal.AbstractCanalClientTest.process(AbstractCanalClientTest.java:143) ~[classes/:na] at com.clickplus.canal.AbstractCanalClientTest$2.run(AbstractCanalClientTest.java:86) [classes/:na] at java.lang.Thread.run(Thread.java:722) [na:1.7.0_17] Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。 at sun.nio.ch.SocketDispatcher.write0(Native Method) ~[na:1.7.0_17] at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) ~[na:1.7.0_17] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) ~[na:1.7.0_17] at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.7.0_17] at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:450) ~[na:1.7.0_17] at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.writeWithHeader(SimpleCanalConnector.java:289) ~[canal.client-1.0.4.jar:na] at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.ack(SimpleCanalConnector.java:253) ~[canal.client-1.0.4.jar:na] ... 3 common frames omitted

小数据量时,canal运行是没有问题的,当有大事务执行时(千级万级的insert),就会报这个错误,调大了buffersize和客户端的batchsize都没什么用

原提问者GitHub用户gurenyuan123

展开
收起
绿子直子 2023-05-09 10:34:33 642 0
1 条回答
写回答
取消 提交回答
  • 我之前处理数据时也遇到过这种问题。

    1、使用场景

    我使用的是canal 1.0.25,客户端采用定时任务实时处理canal服务端获取的日志数据,并且每个定时任务都是使用同一个客户端链接对象。数据库瞬间更新1w条数据时,canal客户端处理数据时,运行一会就会一直报你说的这种错误——“Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。”

    2、解决办法

    每个定时任务都使用新创建的客户端链接对象。并在任务结束时断开链接。

    原回答者GitHub用户jnliao

    2023-05-10 10:00:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载