单机airflow性能优先和调度说明

单机airflow性能优先和调度说明

性能调优

环境说明

airflow版本 2.0.2
执行测试环境的执行器:Local Executor,将自带的sqlite替换成msyql数据库,可以支持并发调度
使用 airflow config get-value core executor可以查看使用的执行器

参数调整

主要对于airflow.cfg配置文件内参数进行调整,针对核心的几个参数进行说明:

  1. parallelism: 执行器能最大并行执行的task数量
  2. dag_concurrency: 一个DAG能并发执行的task数量,这个设置较低的值避免同时运行的数量太大,导致CPU使用率过高,系统响应慢
  3. max_active_runs_per_dag: 每个DAG能处于running状态的最大数量, 需设置较低的值避免大量任务堆积的情况
  4. scheduler_heartbeat_sec: 调度器执行调度的周期,对于强实时任务应设置较低的值
  5. parsing_processes: 解析DAG的进程的数量,在DAG比较多的时候可以设置较高
  6. workers 实际进行工作的进程数,设置为合理值避免worker进程过多导致cpu使用率过高

调度说明

如我的DAG创建时传递参数,如下
DAG(
dag_id=‘tutorial_’+str(i),
default_args=default_args,
description=‘A simple tutorial DAG’,
schedule_interval=timedelta(seconds=60*i + 60),
# start_date=days_ago(0, hour=23, minute=0),
start_date=timezone.utcnow().replace(minute=0),
)
其中start_date+schedule_interval就是第一个DAG执行的时间对应前端中的 Execution Date ,随后调度的时候就是使用 Execution Date 为标准每次DAG执行完之后就增加schedule_interval,当当前的时间>Execution Date时,DAG会被不停的触发调度,会不断积累调度中的DAG和并发执行的task,其调度周期不满足设置的schedule_interval周期。
所以创建DAG时,设置start_date应该恰好设置为当前时间-schedule_interval的相近时间,这样在airflow迅速补完欠缺的运行次数后,Execution Date更新至未来的时间点,就会在当前时间到达未来的时间点后迅速调度(前提是调度器未挂的情况下),使得调度时间周期满足设置的周期。
注: start_date+schedule_interval 不能是未来的时间,否则每次解析DAG时,都无法触发DAG。同时在第一次使用 start_date+schedule_interval 作为Execution Date后,新的DAG的Execution Date都在原来的基础上增加schedule_interval

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NineKit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值