气流Web服务器突然停止启动

时间:2019-05-17 09:03:31

标签: python gunicorn airflow airflow-scheduler

我的气流网络服务器突然停止启动。当我尝试启动Web服务器时,它没有提供UI。

我尝试将db重置为airflow resetdb,并尝试airflow initdb重新启动所有服务。降级Gunicorn,然后再次升级。重新启动我的Linux机器,但是,什么都没有改变。

网络服务器的日志如下:

[2019-05-17 08:08:00 +0000] [14978] [INFO] Starting gunicorn 19.9.0
[2019-05-17 08:08:00 +0000] [14978] [INFO] Listening at: http://0.0.0.0:8081 (14978)
[2019-05-17 08:08:00 +0000] [14978] [INFO] Using worker: sync
[2019-05-17 08:08:00 +0000] [14983] [INFO] Booting worker with pid: 14983
[2019-05-17 08:08:00 +0000] [14984] [INFO] Booting worker with pid: 14984
[2019-05-17 08:08:00 +0000] [14985] [INFO] Booting worker with pid: 14985
[2019-05-17 08:08:00 +0000] [14986] [INFO] Booting worker with pid: 14986
[2019-05-17 08:08:02,179] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:08:02,279] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:08:02,324] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:08:02,342] {models.py:273} INFO - Filling up the DagBag from /root/airflow/dags
[2019-05-17 08:08:02,376] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:08:02,435] {models.py:273} INFO - Filling up the DagBag from /root/airflow/dags
[2019-05-17 08:08:02,521] {models.py:273} INFO - Filling up the DagBag from /root/airflow/dags
[2019-05-17 08:08:02,524] {models.py:273} INFO - Filling up the DagBag from /root/airflow/dags
[2019-05-17 08:10:00 +0000] [14978] [CRITICAL] WORKER TIMEOUT (pid:14984)
[2019-05-17 08:10:00 +0000] [14978] [CRITICAL] WORKER TIMEOUT (pid:14985)
[2019-05-17 08:10:00 +0000] [14978] [CRITICAL] WORKER TIMEOUT (pid:14986)
[2019-05-17 08:10:00 +0000] [14978] [CRITICAL] WORKER TIMEOUT (pid:14983)
[2019-05-17 08:10:01 +0000] [15161] [INFO] Booting worker with pid: 15161
[2019-05-17 08:10:01 +0000] [15164] [INFO] Booting worker with pid: 15164
[2019-05-17 08:10:01 +0000] [15167] [INFO] Booting worker with pid: 15167
[2019-05-17 08:10:01 +0000] [15168] [INFO] Booting worker with pid: 15168
[2019-05-17 08:10:03,953] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:10:04,007] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:10:04,020] {__init__.py:51} INFO - Using executor LocalExecutor
[2019-05-17 08:10:04,036] {__init__.py:51} INFO - Using executor LocalExecutor

有人遇到同样的问题吗?或您有什么建议吗?

5 个答案:

答案 0 :(得分:1)

我今天也遇到了同样的问题,气流网络服务器停止启动。我尝试了很多,但无法确定问题的原因,无论是resetdb还是upgradeb都无法正常工作,重新安装也无法正常工作。然后,我只是在dags中注释了整个代码,并在dag文件夹中手动创建了dags的.pyc文件。气流再次开始起作用。我观察到问题出在绞车上。当我删除dags服务器时,它开始正常运行。因此,我对面临此问题的任何人的建议是,请检查您的问题专家,肯定其中存在错误。不要责怪气流,有时我们自己的代码会使系统混乱。

答案 1 :(得分:0)

这是一个可能对我有用的解决方案。

确保dags_folder不包含与dag定义和配置无关的任何文件。

Airflow网络服务器会定期扫描dag_folder,我发现如果此文件夹很大,扫描会导致服务器停止运行。

希望这对您有所帮助:)

答案 2 :(得分:0)

在我的情况下,我的DAG之一通过SSH隧道连接到MySQL数据库,当我直接连接到MySQL时它可以工作,但是通过SSH隧道失败。不知道为什么,但是现在我开始从DAG直接连接到MySQL。

由于DAG无法连接到MySQL,因此Webserver没有启动gunicorn。

答案 3 :(得分:0)

在我的情况下,我的一些DAG有很多Fargate任务(我使用了ECSOperator),这些任务中的每一个都使用我编写的子例程来通过使用boto3的{{1}获得子网ID和安全组ID。 }和describe_subnets。显然,这些调用已使服务器崩溃。

答案 4 :(得分:0)

如果您具有1.10.7及更高版本,请尝试同时在网络服务器和计划程序中打开DAG Serialization option。这将阻止Web服务器解析DAG文件。调度程序的解析器是一个子进程,每个文件都有超时。您仍然应该在任务执行上下文之外找到可能正在使用网络资源的python文件,并对其进行修复……但这可以有所帮助。

或者将dag文件夹移动到另一个命名目录,创建一个空目录,将原始dag文件夹目录设置为指向该空目录的符号链接。启动您的网络服务器。现在,再次将符号链接更改为dag目录。

我个人不知道为什么在响应任何Web请求之前必须先填充DAG Bag。为什么将其构建为后台进程?