小编use*_*545的帖子

Apache Airflow - 调度程序缓慢

我们正在使用带有CeleryExecutor的Airflow 1.7.3.气流调度程序设置为systemd服务,其中--num-run设置为10以停止它并每10次运行重启(如此处所示).

我们注意到,与常规循环~16秒相比,调度程序的每个第9个循环需要相当长的时间(大约160秒或更长).根据日志,这是调度程序通过刷新所有dag填充DagBag时的循环.随着我们的气流装置中的笨拙/任务数量的增加,这个时间会增加.

我们的大多数任务都非常小,只需几秒钟就可以运行,但是它们会陷入"未定义"状态并且没有排队,而调度程序正在忙着"填满dagbag".与此同时,芹菜工人闲置着.我们尝试过以下方法:

  • 增加了celeryd_concurrency(这使我们能够向工人发送更多任务)
  • 增加了non_pooled_task_slot_count(以便更多任务可以排队)
  • 也增加了并行性和dag_concurrency

所有这些措施都允许启动更多任务,只有在调度程序对它们进行排队时才会启动,而这些任务在进入刷新阶段时无效.以下是每个调度程序循环的计时:

[2016-11-07 23:18:28,106] {jobs.py:680} INFO - Starting the scheduler  
[2016-11-07 23:21:26,515] {jobs.py:744} INFO - Loop took: 16.422769 seconds  
[2016-11-07 23:21:46,186] {jobs.py:744} INFO - Loop took: 16.058172 seconds  
[2016-11-07 23:22:02,800] {jobs.py:744} INFO - Loop took: 14.410493 seconds  
[2016-11-07 23:22:21,310] {jobs.py:744} INFO - Loop took: 16.275255 seconds  
[2016-11-07 23:22:41,470] {jobs.py:744} INFO - Loop took: 17.93543 seconds  
[2016-11-07 23:22:59,176] {jobs.py:744} INFO - Loop took: 15.484449 seconds  
[2016-11-07 23:23:17,455] {jobs.py:744} INFO - Loop took: 16.130971 …
Run Code Online (Sandbox Code Playgroud)

scheduler airflow

5
推荐指数
0
解决办法
1622
查看次数

标签 统计

airflow ×1

scheduler ×1