【踩坑日常】-- 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断开连接之前,执行完成。
参考博客
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
深度学习5---经典神经网络结构