如何增加每秒排队的任务?

7yl*_*l4r 4 airflow airflow-scheduler

我正在尝试诊断一个表现不佳的气流管道,我想知道我应该从气流调度程序中得到什么样的性能,类似于"每秒安排的任务".

我有几个排队的工作,我的许多任务在几秒钟内完成,所以我怀疑调度程序是限制组件,我有很多快速任务的错误.如果可以避免,我宁愿不重写我的DAG.

我该怎么做才能提高调度程序排队任务的速率?


管道细节

这是我目前的airflow.cfg的样子.

我只有两个笨蛋跑.一个是每5分钟安排一个,另一个很少由第一个触发.我目前正试图以这个频率回填几年,但可能需要改变我的方法:

在此输入图像描述

至于工作节点:我目前有4个相当强大的服务器,在磁盘,网络,CPU,RAM,交换中的资源使用率低于10%.关闭3个工作人员对我的任务吞吐量没有影响,服务器几乎没有记录工作量的变化.

Dan*_*ang 7

您的许多配置值airflow.cfg可能与此相关.

[core]:

  • parallelism:可以一次运行的任务实例总数.
  • dag_concurrency:每个DAG运行可以运行的任务实例的限制,如果您有许多并行任务,可能需要碰撞.定义DAG时可以覆盖.
  • non_pooled_task_slot_count:没有配置可以一次运行的池的任务限制.
  • max_active_dag_runs_per_dag:如果您手动触发运行,或者有短暂间隔计划的DAG运行备份.定义DAG时可以覆盖.

[scheduler]:

[worker]:

  • celeryd_concurrency:celery将运行的工作者数量,因此工作人员可以立即执行的任务实例数量基本上是多少.匹配CPU的数量是一个受欢迎的起点,但肯定会更高.

最后一个是在你使用的时候CeleryExecutor,如果你想提高你的任务吞吐量,我肯定会推荐.