问题背景:
kettle作业包含60个转换,新建时手动执行没问题,前两次定时执行也没问题,但是过了一天手动和定时执行都有问题,再次新建任务执行有没问题,但是多次执行后又有问题。
kettle,DB连接:mysql,orcale
①kettle作业执行卡住,如下图所示
②定时执行的时候出现这三种错误
Unexpected error during transformation metadata load 转换元数据加载期间出现意外错误
An error occured loading the directory tree from the repository 从存储库加载目录树时出错
No operations allowed after connection closed. 连接关闭后不允许操作。
解决方案:
1.Mysql在5以后针对超长时间DB连接做了一个处理,服务器“wait_timeout”默认8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。所以使用连接池的时候虽然连接对象还在但是链接数据库的时候会一直报这个异常
所以要增加mysql的wait_timeout的时间
这边建议采用sql命令的模式来延长响应时间:
进入MySQL查看设置的时间,show global variables like 'wait_timeout';
设置响应时间,set global wait_timeout=10
2.针对转换元数据加载期间出现意外错误采取的解决办法
要检查job中引入的ktr是否是绝对路径,如果是绝对路径的话要修改为相对路径
如果要修改为相对路径需要:ktr文件和job文件必须放到同一目录下
结果:
3.将一个大的ketlle任务,分割成若干个小的任务(前提是分割节点是没有关联性的)