分析|Airflow任务调度延时问题分析和优化( 三 )


为什么说这个值会影响调度延时呢?因为对于airflow这样的调度系统,0-24小时都可能有大量的任务在调度,假设某一时刻任务峰值比较大,就会造成其他的任务等待,就会造成延时,这个时候就需要考虑这个参数的配置或者整体集群的扩容了。
dag_concurrency:
这个参数比较容易理解,就是对于一个dag,最多能同时跑多少个task,如果某一时刻同一个dag下的任务启动的比较多,最多并行跑的数量也只能是dag_concurrency的值,所以就会造成其它任务的等待和延时。当然我们不能把
这个参数配置的过大,要考虑系统中dag之间的影响,如果单个dag的并行度过高,可能会造成其它dag的任务调度延时或者长时间得不到执行。
任务优先级参数对调度延时造成的影响。
任务优先级这个很明显问题,由于很多任务的优先级设置的比较低,造成优先级高的任务先执行以至于后面的低优先级的任务得不到执行。那么我们先分析下airflow背后的优先级的逻辑。
airflow的优先级调度源码如下:
分析|Airflow任务调度延时问题分析和优化
文章插图
举个例子,假设我们有一个如下图图结构的dag图,并且每个任务的节点的优先级都是默认值1
分析|Airflow任务调度延时问题分析和优化
文章插图
根据airflow的优先级计算策略我们可以把它归为3类:
1.任务本身优先级值的配置作为最终任务优先级的值。任务优先级配置可以在operator参数指定。官方源码参数解释如下:
分析|Airflow任务调度延时问题分析和优化
文章插图
2. 任务自身的优先级配置值加上所有下游优先级配置值之和。
我们可以这样解释,如下下图描述:
3. 任务自身优先级的配置值加上所有上游优先级配置值之和。
我们可以这样解释,如下下图描述:
小结:任务优先级配置也会对任务的执行造成延时,我们在日常的任务执行计划中,应当根据自身任务的紧急程度设置不同的优先级策略。
对于airflow而言优先级的默认配置是WeightRule.DOWNSTREAM,这种方式其实需要根据同一时刻有哪些task需要执行,并根据task所在dag的结构图计算出优先级值,进行相关的逻辑排名,然后进行执行。
因此在以后的生产环境中要根据真实的需要进行相关的优先级值的调整。

【精彩生活】jing111.com小编为您精选以下内容,希望对您有所帮助: