开发者社区> 问答> 正文

SocketTimeoutException异常,每隔一分钟就出一个,但是同步没有问题

tu6.png

pid:3 nid:1 exception:canal:ytz_feiqiu:java.net.SocketTimeoutException: Timeout occurred, failed to read total 4 bytes in 25000 milliseconds, actual read only 0 bytes at com.alibaba.otter.canal.parse.driver.mysql.socket.BioSocketChannel.read(BioSocketChannel.java:124) at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch0(DirectLogFetcher.java:174) at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:77) at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:159) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:271) at java.lang.Thread.run(Thread.java:748)

日志记录里面每分钟都会又这个异常,但是同步也没有问题,都能正常同步数据, 用的是docker,数据源是mysql 5.1.73, 另一个数据源mysql 5.6.42的就没有这个问题, 请问 这个异常跟数据库版本有关系吗? 该从哪里调查希望能给个提示

原提问者GitHub用户vinnie888

展开
收起
古拉古拉 2023-06-16 19:43:01 111 0
1 条回答
写回答
取消 提交回答
  • 在mysql库上定时产生心跳.

    产生这个异常的本质,mysql在25秒内都没有任何binlog事件,canal等了25秒没有任何消息就会出现类似的错误,mysql新版本针对无消息时引入了heartbeat事件,也有同学发现mysql并不是准时按照masterheart设置的时间发心跳包,经常会超过2个轮询才会发心跳包,即30s+

    原回答者GitHub用户agapple

    2023-06-16 20:12:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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