项目场景:

项目场景:airflow scheduler在运行一段时间后突然不工作或者空转,后台进程存在,但是不工作


问题描述

查看日志发现scheduler无心跳

================================================================================
[2022-06-14 14:51:06,301] {manager.py:1065} INFO - Finding 'running' jobs without a recent heartbeat
[2022-06-14 14:51:06,304] {manager.py:1069} INFO - Failing jobs without heartbeat after 2022-06-14 06:46:06.304241+00:00
[2022-06-14 14:51:16,495] {manager.py:1065} INFO - Finding 'running' jobs without a recent heartbeat
[2022-06-14 14:51:16,497] {manager.py:1069} INFO - Failing jobs without heartbeat after 2022-06-14 06:46:16.497371+00:00

查看scheduler错误日志

Traceback (most recent call last):File "/home/airflow/env/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 697, in _finalize_fairyfairy._reset(pool)File "/home/airflow/env/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 893, in _resetpool._dialect.do_rollback(self)File "/home/airflow/env/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/base.py", line 2513, in do_rollbackdbapi_connection.rollback()
MySQLdb._exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')
(env) *@:/home/>tail airflow/conf/airflow-scheduler.err
Traceback (most recent call last):File "/home/airflow/env/lib/python3.9/threading.py", line 950, in _bootstrap_innerself.run()File "/home/airflow/env/lib/python3.9/concurrent/futures/process.py", line 317, in runresult_item, is_broken, cause = self.wait_result_broken_or_wakeup()File "/home/airflow/env/lib/python3.9/concurrent/futures/process.py", line 376, in wait_result_broken_or_wakeupworker_sentinels = [p.sentinel for p in self.processes.values()]File "/home/airflow/env/lib/python3.9/concurrent/futures/process.py", line 376, in <listcomp>worker_sentinels = [p.sentinel for p in self.processes.values()]
RuntimeError: dictionary changed size during iteration

原因分析:

追踪栈堆可见

Process 13749: python3.9 /home/airflow/env/bin/airflow scheduler -D
Python v3.9.0 (/home/airflow/env/bin/python3.9)Thread 13749 (idle): "MainThread"wait (threading.py:312)result (concurrent/futures/_base.py:435)result_iterator (concurrent/futures/_base.py:600)_chain_from_iterable_of_lists (concurrent/futures/process.py:559)_send_tasks_to_celery (airflow/executors/celery_executor.py:325)_process_tasks (airflow/executors/celery_executor.py:277)trigger_tasks (airflow/executors/celery_executor.py:268)heartbeat (airflow/executors/base_executor.py:158)_run_scheduler_loop (airflow/jobs/scheduler_job.py:734)_execute (airflow/jobs/scheduler_job.py:651)run (airflow/jobs/base_job.py:246)_run_scheduler_job (airflow/cli/commands/scheduler_command.py:46)scheduler (airflow/cli/commands/scheduler_command.py:70)wrapper (airflow/utils/cli.py:92)command (airflow/cli/cli_parser.py:48)main (airflow/__main__.py:48)<module> (airflow:8)
Thread 2111 (idle): "QueueFeederThread"wait (threading.py:312)_feed (multiprocessing/queues.py:233)run (threading.py:888)_bootstrap_inner (threading.py:950)_bootstrap (threading.py:908)

发现是线程空转导致scheduler进程空等,一直饥饿,检查发现这其实是python3.9的bug
详见issue43498

解决方案:

一次性方案

通过web端或者命令行
airflow jobs check --job-type SchedulerJob --allow-multiple --limit 100
监控scheduler的状态
如果进程无心跳则重启

永久方案

升级python版本

python >=3.9.10或3.10.1

airflow scheduler stuck相关推荐

  1. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  2. 大数据调度平台Airflow(三):Airflow单机搭建

    目录 Airflow单机搭建 一.安装Anconda及python3.7 1.官网下载Anconda ,选择linux版本,并安装 2.将下载好的anconda安装包上传至mynode4节点,进行安装 ...

  3. airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版

    之前试用了azkaban一小段时间,虽然上手快速方便,但是功能还是太简单,不够灵活. Airflow使用代码来管理任务,这样应该是最灵活的,决定试一下. 我是python零基础,在使用airflow的 ...

  4. centos 7 ssh 安装mysql,Centos 7 安装Airflow

    Airflow 安装环境 : centos7   python3.7.0  mysql-8.0.22 一.安装mysql-8.0.22 二.安装python3.7.0 三.安装配置 [root@had ...

  5. Airflow安装部署

    Airflow安装部署 新闻信息是通过爬虫获取,使用scrapy框架进行爬虫任务:使用airflow工作流监控平台对爬虫任务进行管理.监控(可使用CeleryExecutor分布式,也可使用Local ...

  6. python etl 大猩猩_Airflow教程-使用Airflow实现ETL调度

    一.Airflow是什么 airflow 是一个编排.调度和监控workflow的平台,由Airbnb开源,现在在Apache Software Foundation 孵化.airflow 将work ...

  7. airflow sql_alchemy_conn mysql_搭建AirFlow—— 一段波折后的总结

    声明:本人借鉴了众多同行的博客,所以总结了这篇博客,用来致敬他们,非常感谢他们,转载请注明出处. 基础环境:[CentOS 6.9](cat /etc/redhat-release) python2. ...

  8. bitnami如何使用_使用Bitnami获取完全配置的Apache Airflow Docker开发堆栈

    bitnami如何使用 I've been using it for around 2 years now to build out custom workflow interfaces, like ...

  9. airflow mysql_Airflow 使用及原理分析

    Airflow 入门及使用 什么是 Airflow?Airflow 是一个使用 Python 语言编写的 Data Pipeline 调度和监控工作流的平台. Airflow 是通过 DAG(Dire ...

最新文章

  1. 自然语言推理:微调BERT
  2. BZOJ 1503 郁闷的出纳员(splay)
  3. centos5 db_load 命令无法使用
  4. WINCE cvrtbin命令简介
  5. 【模型解读】GoogLeNet中的inception结构,你看懂了吗
  6. 【论文相关】 技术性论文结构剖析
  7. 前端学习(1708):前端系列javascript之问题解答
  8. Python3 爬虫实战 — 安居客武汉二手房【requests、Beautiful Soup、CSV】
  9. csdn学院的python培训怎么样_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作...
  10. day1-接口测试与接口测试工具
  11. 【转】Odoo开发之:工作流 workflow
  12. Jquery关闭离开页面时提醒
  13. 第0课【课前准备】Keil安装 ISP程序下载
  14. dubbo源码解析之dubbo配置解析
  15. 瑞利衰落信道容量及瑞利衰落条件下中断容量对AWGN容量的占比
  16. 应用电子计算机英文,应用电子技术英文介绍
  17. 淘宝API_获取购买到的商品订单列表
  18. 四川锦城学院计算机专业好不,四川大学锦城学院计算机专业如何?
  19. OC内存管理常见面试题整理
  20. 启发式算法Python代码库——scikit-opt

热门文章

  1. 新人贴:MATLAB 错误使用 surf (line 74) X、Y、Z 和 C 不能是复数。
  2. 抢购、秒杀插件,秒杀助手
  3. 安装配置管理 之 Realplay 10.0 的安装和使用
  4. Linux下自定义虚拟串口驱动
  5. 通过yum获取rpm离线安装包
  6. mysql:Windows修改MySQL数据库密码
  7. 美国读研计算机 回国后好就业吗,美国留学归国就业前景如何
  8. adb 开启/关闭设备wifi
  9. 云顶之弈国际服服务器维护,【云顶之弈】国服和国际服有大量差异,国际服修复多个漏洞...
  10. Avalonia学习实践(一)--示例