我将Airflow(1.10.3)与AWS RDS Postgres用作metaStore和celery_backend,将SQS作为队列服务和CeleryExecutor。我有1台运行气流Web服务器和调度程序服务的主计算机,以及1台工作计算机。
Airflow工作人员总是渴望用大量未使用的资源(CPU和RAM,使用率始终低于20%)来执行更多任务(排队)。我观察到工人分批处理任务,例如:如果队列中有10个任务和2个正在运行的任务,则它将等待2个任务完成,然后再从队列中选择下一批任务。
在Worker实例中airflow.cfg中的并行设置。
this
。
parallelism = 32
。
dag_concurrency = 32
。
non_pooled_task_slot_count = 128
。
max_active_runs_per_dag = 32
(但计划程序中没有问题,因为任务会立即排队)
在我的实现中需要指出的一件事-气流任务不是单个流程任务,而单个Task进一步催生了多个流程(3-5)。尽管即使考虑了过程计数,我的气流工作人员也从未达到完全的并行性。
关于-
的任何建议
一种)。有没有办法充分利用气流工作者并行执行任务?或者,如果在设置Airflow时缺少其他信息。
b)。上面提到的并行设置是在气流任务中配置为原子单位,还是任务产生的线程/进程数?
谢谢!