azkaban任务延时执行问题总结

问题说明

 总共是定时了160个任务,但是到了执行任务时间点只有159个任务执行,延时了一个任务,哪个任务得执行器就是cube194,就是执行器队列到达了顶峰的那一个执行器

 exec配置如下

 

问题原因:exec端设置了executor.flow.threads = 30,那么web端通过资源拦截,权重分析向该exec发送任务,任务数量达到了30得时候那就会等待,在exec源码里就有两个队列,一个是执行队列runningflows,一个是等待队列submittedflows

web端是监控不到exec端队列得实时大小得,他只管发,那么就会出现任务延时执行,有任务退出才能再进

web端发送任务会选择exec端,会对所有exec进行两重筛选,第一层是进行资源控制,如果流量小于0,内存不足6*1024,cpu资源达到了百分之95,当然这个是配置文件配置了才会进行选择azkaban.executorselector.filters,第二层就是对过了第一层筛选得进行权重选择

以下就是权重配置

 

然后因为场景问题,我们直接重写源码,不用第二层限制,使用随机算法进行随机发放,避免了任务大量堆积在某一个exec上面,缓解了任务延时执行得情况,但是没有根治,根治是需要拿到exec上面得配置azkaban.executorselector.filters,和,当前执行队列大小,这两个我们在web端都没,exec端是没问题,通过网络去拿,又很消耗资源,因为在web端flow分发是单独进行的,不是一个批次的去发,所以在定时任务,1分钟分发2-300个任务,那就会进行任务数*executor数次网络请求,这就比较恼火,当然,web端根据使用场景自己维护一个过期队列,也能做,但是也不能说是百分百没问题,后期再改吧,现阶段够用就行了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值