踩坑经历(十二)记一次kettle定时任务延迟执行的排错过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/84840736
生产现场
场景

kettle的.sh批量执行文件内包含了a.job和b.job,a.job在b.job前面


问题

生产环境下设置的晚上4点执行kettle的b.job作业,4点没有执行白天12点多执行


排查过程
1.生产环境查看linux的定时命令

没有错误


2.从生产环境拿到kettle执行日志

1.查找b.job的kettle执行日志,发现每天中午执行,且没有报错
2.查找a.job的kettle执行日志,发现报错,且执行时间在中午


3.查看kettle日志执行时间,job是否是线性执行(按顺序执行)

通过查看日志确定job是线性执行


4.问题定位

a.job执行出错,导致长时间执行12点多结束,此时b.job开始执行


5.问题继续

查看a.job支持报错日志

Truncated incorrect DOUBLE value: '006a97d8d813420398b08fc890a78084'

6. 二次定位问题

存在两种情况发生这种问题:① 赋值的时候,类型无法匹配;②where条件比较的时候类型无法匹配


7.比对数据库赋值字段类型

没有问题


8.确定问题

where条件比较的时候有问题,对比发现id赋值的时候,将int值和varchar比较,导致无法匹配发生错乱


9.问题解决

以业务库为准,修改存储过程id值字段类型,修改存储过程id值字段类型


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/84840736