气流工人挨饿排队任务

时间:2019-08-23 22:15:44

标签: celery airflow amazon-sqs worker celery-task

我将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)。上面提到的并行设置是在气流任务中配置为原子单位,还是任务产生的线程/进程数?

谢谢!

0 个答案:

没有答案