【踩坑日常】-- java.net.SocketException: Broken pipe

项目场景:

使用Kettle 整合不同Mysql数据库数据,批量插入Clickhouse


问题描述

Kettle 任务执行过程中,出现偶发性失败

报·java.net.SocketException: Broken pipe 异常


原因分析:

wait_timeout

因为使用的正式服务使用的数据库,查询配置的 wait_timeout 那这个150是怎么确认的,根据业务高峰期等实际情况综合考虑结果。

当前情况会不会,因为是多表关联批量插入数据,可能耗时比较慢,导致在150秒还未插入完成,数据库连接已经被Mysql断开,造成报错

既然wait_timeout是根据业务来综合考虑的结果,同步数据必然不能影响正式环境业务。 考虑从同步数据执行过程入手。


解决方案:

将Kettle执行过程的表输出由原先1000改为800。定时同步数据。

这样减少每次批量整合数据,插入数据的时间,在Mysql断开连接之前,执行完成。

参考博客

经验分享 程序员 微信小程序 职场和发展