问题描述

使用Airflow作为工作流引擎,目前面临一个问题,因为dag数的激增,导致airflow的页面无法打开,非常非常的慢,通过后台看airflow的gunicorn负载非常的高。尝试调整配置,无论是开4个worker还是8个worker都非常的高。无法解决页面卡死的情况,需要亟待解决airflow的webserver的负载问题,如何能够使他轻量化。

按照官方文档的建议,设置store_serialized_dags = True,可以使得webserver不需要轮训dags目录下的file文件,而是从DB持久化中读取,大大提高airflow中webserver的性能

# Whether to serialise DAGs and persist them in DB.
# If set to True, Webserver reads from DB instead of parsing DAG files
# More details: https://airflow.apache.org/docs/stable/dag-serialization.html
store_serialized_dags = True
compress_serialized_dags = False

按照官方文档建议修改过后,webserver的负载确实降低了,但是新问题来了。airflow页面里的任何一个dag都无法正常的进去,以及查看webserver的flask访问日志,看到查看dag详情的时候都会报错
ValueError: DAG ‘xxxx’ not found in serialized_dag table

根据官方文档对store_serialized_dags配置的解释,猜测应该是无法将这些dag入库持久化。
根据这快源码来推测self._add_dag_from_db(dag_id=dag_id)
dag insert db应该是scheduler的工作,那么去看看scheduler的日志

schueduler的日志如下报错,它对所有的dag解析都报错
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe3 in position 449: ordinal not in range(128)

解决方案:

通过看codecs.ascii_decode(input, self.errors)[0]代码,往上推,结合网上对错误的解释,觉得应该是scheduler解析dag时候遇到了中文,所以无法进行serializer操作,最终无法入库

File "/usr/local/lib/python3.6/site-packages/airflow/models/dagcode.py", line 189, in _get_code_from_filecode = f.read()File "/usr/lib64/python3.6/encodings/ascii.py", line 26, in decodereturn codecs.ascii_decode(input, self.errors)[0]

通过看code = f.read()对应的open_maybe_zipped源码,可以知道这里读取文件之后返回,那么在读文件这里强制设置编码格式

def open_maybe_zipped(fileloc, mode='r'):"""Opens the given file. If the path contains a folder with a .zip suffix, thenthe folder is treated as a zip archive, opening the file inside the archive.:return: a file object, as in `open`, or as in `ZipFile.open`."""_, archive, filename = ZIP_REGEX.search(fileloc).groups()if archive and zipfile.is_zipfile(archive):return zipfile.ZipFile(archive, mode=mode).open(filename)else:return io.open(fileloc, mode=mode)

将如上最后一行代码o.open(fileloc, mode=mode)改为io.open(fileloc, mode=mode, encoding=‘utf-8’)

def open_maybe_zipped(fileloc, mode='r'):"""Opens the given file. If the path contains a folder with a .zip suffix, thenthe folder is treated as a zip archive, opening the file inside the archive.:return: a file object, as in `open`, or as in `ZipFile.open`."""_, archive, filename = ZIP_REGEX.search(fileloc).groups()if archive and zipfile.is_zipfile(archive):return zipfile.ZipFile(archive, mode=mode).open(filename)else:return io.open(fileloc, mode=mode, encoding='utf-8')

重启webserver和scheduler,一切解析,调度均正常。
而且webserver的负载降低了,可以很快的浏览任意内容,不会受到dag数的增多而影响airflow的web效率

工作流Airflow的性能优化,应对dag数目的激增相关推荐

  1. Unity高级知识点总结:性能优化与图形渲染进阶!

    A.性能优化相关知识 一.综合优化 1.降低屏幕分辨率尤其是在android平台对性能提升很大.可以有效缓解gpu的压力. 我们在android上分辨率是实际的0.85左右. 2.做好资源异步加载,实 ...

  2. Java性能优化最易操作的10大技巧!

    编辑 | ShirleyZ 译文 | 班纳睿 .一叶障目  .learner 原文 | https://coyee.com/article/11753-top-10-easy-performance- ...

  3. 转载:SqlServer数据库性能优化详解

    本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小 ...

  4. 【转】U3D手游《苍穹变》性能优化经验谈

    4月11日,由unity公司举办的Unite 2016大会在上海正式举行,在4月12日的案例分享专场会议上,天神互动U3D高级开发工程师康凯以手游<苍穹变>为例讲述了3DMMOARPG游戏 ...

  5. Web性能优化与Http2

    如今,互联网上的内容越来越丰富,过去几年时间,一个页面产生请求和整个大小都一直增长,这个趋势还会一直保持,对页面性能优化也要马不停蹄. 一个页面,会经历过加载资源,执行脚本,渲染界面的过程.我们知道, ...

  6. 并行算法设计与性能优化_CME 323: 分布式算法与优化(1)

    这门课程是由斯坦福大学在今年 4 月份推出的线上课程,主讲人是 Reza Zadeh ,总体来说主讲人讲解比较幽默,内容也是容易让人听得下去,不是那么晦涩难懂.课程内容分为两个部分:并行计算(para ...

  7. 数据仓库的 RDBMS 性能优化指南

    转:http://www.microsoft.com/china/technet/prodtechnol/sql/2000/maintain/c2061.asp 数据仓库的 RDBMS 性能优化指南 ...

  8. 走近伏羲,谈5000节点集群调度与性能优化

    原文链接:http://click.aliyun.com/m/13935/ 5K项目是飞天平台的里程碑,系统在规模.性能和容错方面都得到了飞跃式的发展,达到世界领先水平.伏羲作为飞天平台的分布式调度系 ...

  9. Android性能优化之APK瘦身最全总结

    Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...

最新文章

  1. PhpStorm Swoole 和 CI 代码自动补全
  2. Clang-Format: Visual Studio Style
  3. 网络中间设备路在何方
  4. 史上最让数学家无奈的规定!背后真相让人不敢相信,可是没有人能证明对错.........
  5. hibernate简单应用
  6. 基于OpenCV实现图像平移
  7. sql 2008 清空数据库日志
  8. matlab2014a VS2010混合编程
  9. C在mac上用不了malloc.h头文件的解决方法
  10. 神经网络信息双向传播,神经网络反向传播推导
  11. 全新2021款 Jlink隔离器,ARM仿真器隔离,Jlink,Nu-link,ULINK的隔离,Cortex-M系列隔离仿真
  12. 产品经理学习笔记-简约设计(1)
  13. supermap 点云_SuperMap新一代三维GIS技术体系
  14. 西电计科四年(学院任选)课程推荐
  15. 【蓝桥杯】【python】数字三角形
  16. Mybatis 报The error occurred while handling results
  17. linux挂载多个虚拟光驱,Linux操作系统下虚拟光驱(iso)的挂载
  18. 毕业设计-基于微信小程序的智能查寝系统
  19. cocharan-Armitage trend test
  20. C语言中文网-CPP11

热门文章

  1. 56 Marvin: 一个支持GPU加速、且不依赖其他库(除cuda和cudnn)的轻量化多维深度学习(deep learning)框架介绍...
  2. 移动电影院迎来2.0版本,5部影片在移动电影院上举办“首映礼”
  3. drcom上网登录窗不弹出_无线网络连接后不能弹出浏览器登录页面是怎么回事?
  4. 【记录】我的一个Centos开机自启动脚本的制作
  5. excel数据处理:说说数据源表必须遵守的那些规则
  6. Mac OS X平台下QuickLook开发教程
  7. 计算机控制矢量网络分析仪,完全独立的HF(短波)软件定义收发器和矢量网络分析仪设计...
  8. LSM6DS3(六轴传感器)STM32驱动及6D功能实现
  9. 谈谈 跨境劳工的噩梦深坑。
  10. 明日之后营地14庄中式风房子上线,网友:都是氪金大佬