【踩坑日常】-- java.net.SocketException: Broken pipe
2022/3/11 12:14:54
本文主要是介绍【踩坑日常】-- java.net.SocketException: Broken pipe,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目场景:
使用Kettle 整合不同Mysql数据库数据,批量插入Clickhouse
问题描述
Kettle 任务执行过程中,出现偶发性失败
报·java.net.SocketException: Broken pipe
异常
原因分析:
这个问题为偶发性问题,首先排除Kettle脚本问题,Clickhouse 批量插入数据性能优异,所以排除Clikchouse,那就要考虑来源,来源为Mysql数据库,Mysql有一个mysql8小时问题,有可能是Mysql连接的问题。
wait_timeout
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0/dbcp 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向c3p0/dbcp 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。
作者:灼灼2015
链接:https://www.jianshu.com/p/69dcae4454b3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
因为使用的正式服务使用的数据库,查询配置的 wait_timeout
那这个150
是怎么确认的,根据业务高峰期等实际情况综合考虑结果。
当前情况会不会,因为是多表关联批量插入数据,可能耗时比较慢,导致在150秒还未插入完成,数据库连接已经被Mysql断开,造成报错
既然wait_timeout是根据业务来综合考虑的结果,同步数据必然不能影响正式环境业务。
考虑从同步数据执行过程入手。
解决方案:
将Kettle执行过程的表输出由原先1000
改为800
。定时同步数据。
这样减少每次批量整合数据,插入数据的时间,在Mysql断开连接之前,执行完成。
参考博客
mysql经典的8小时问题-wait_timeout
这篇关于【踩坑日常】-- java.net.SocketException: Broken pipe的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具