AirFlow性能调优
修改 airflow.cfg 配置
不加载example dag
load_examples = False # 这个配置只有在第一次启动airflow之前设置才有效
修改检测新dag间隔
最好还是修改一下,因为默认为0,没有时间间隔, 很耗资源。
min_file_process_interval = 10
怎么使 Airflow dag 运行得更快?
parallelism
: 此变量控制 Airflow worker 可以同时运行的任务实例的数量。 用户可以通过改变airflow.cfg
中的 parallelism 调整 并行度变量。
concurrency
: Airflow scheduler 在任何时间不会运行超过 concurrency
数量的 DAG 实例。 concurrency 在 Airflow DAG 中定义。
如果在 DAG 中没有设置 concurrency,则 scheduler 将使用airflow.cfg
文件中定义的dag_concurrency
作为默认值。
max_active_runs
: Airflow scheduler 在任何时间不会运行超过 max_active_runs
DagRuns 数量。
如果在 DAG 中没有设置max_active_runs
,则 scheduler 将使用airflow.cfg
文件中定义的max_active_runs_per_dag
作为默认值。
如何减少 Airflow UI 页面加载时间?
如果你的 dag 需要很长时间才能加载,你可以减小airflow.cfg
中的default_dag_run_display_number
的值。 此可配置控制在 UI 中显示的 dag run 的数量,默认值为 25。
如何修复异常:Global variable explicit_defaults_for_timestamp needs to be on (1)?
这意味着在 mysql 服务器中禁用了explicit_defaults_for_timestamp
,您需要通过以下方式启用它:
- 在 my.cnf 文件的 mysqld 部分下设置
explicit_defaults_for_timestamp = 1
。 - 重启 Mysql 服务器。
这种解决方法更多在针对mysql是安装在服务器上,如果mysql部署在容器里面,my.cnf文件不好找的情况,解决办法可以参考
https://www.cnblogs.com/braveym/p/12169788.html
如何减少生产环境中的 Airflow dag 调度延迟?
max_threads
: scheduler 将并行生成多个线程来调度 dags。 这数量是由max_threads
参数控制,默认值为 2.用户应在生产中将此值增加到更大的值(例如,scheduler 运行机器的 cpus 数量 - 1)。
scheduler_heartbeat_sec
: 用户应考虑将scheduler_heartbeat_sec
配置增加到更高的值(例如 60 秒),该值控制 airflow scheduler 获取心跳和更新作业到数据库中的频率。