Airflow 对数据库的 DNS 查询过多
Airflow too many DNS lookups for database
我们在 AWS 的 K8s 集群上部署了 Apache Airflow。 Airflow 在容器上 运行 但 EC2
实例本身是保留实例。
我们遇到了一个问题,我们发现 Ariflow 正在进行许多与其数据库相关的 DNS 查询。静止时(即没有 DAG 是 运行),它大约是每秒 10。当 运行 个 DAG 时,它可以达到每秒 50。这导致 Route53
阻止我们,因为我们达到了 DNS 查询的数据包限制(每秒 1024 个数据包)。
我们的数据库是 Postgres
RDS,将其切换到 MySQL
时问题仍然存在。
按照我们的理解,DNS 查询从 K8s coredns
服务开始,它会尝试 FQDN 的几种排列,如果无法在其上解析,则将请求发送到 Route53
拥有。
欢迎任何解释 Airflow 行为或如何减少查询数量的想法、想法或提示。
最佳,
经过一些挖掘,我们发现同时发生了几个问题。
首先是 Airflow 的调度程序 运行 大约每秒 2 次。每次它创建数据库查询都会导致多个 DNS 查询。更改该日程安排可以缓解一些问题。
描述了我们遇到的另一个问题 here。如果 FQDN 中 .
的数量少于 x
,coredns
似乎被配置为尝试给定域的某些替代方案。该文章中有 2 个建议的修复方法。我们跟进了他们,DNS 查询的数量下降了。
我们也遇到过这个问题。
不是最容易找到的,因为我们有一个盒子,上面有很多应用程序,进行 1000 次 DNS 查询,请求对我们的 SQL 服务器名称进行 DNS 解析。
我真的很奇怪为什么 Airflow 不像其他应用程序那样只使用 DNS 缓存
我们在 AWS 的 K8s 集群上部署了 Apache Airflow。 Airflow 在容器上 运行 但 EC2
实例本身是保留实例。
我们遇到了一个问题,我们发现 Ariflow 正在进行许多与其数据库相关的 DNS 查询。静止时(即没有 DAG 是 运行),它大约是每秒 10。当 运行 个 DAG 时,它可以达到每秒 50。这导致 Route53
阻止我们,因为我们达到了 DNS 查询的数据包限制(每秒 1024 个数据包)。
我们的数据库是 Postgres
RDS,将其切换到 MySQL
时问题仍然存在。
按照我们的理解,DNS 查询从 K8s coredns
服务开始,它会尝试 FQDN 的几种排列,如果无法在其上解析,则将请求发送到 Route53
拥有。
欢迎任何解释 Airflow 行为或如何减少查询数量的想法、想法或提示。
最佳,
经过一些挖掘,我们发现同时发生了几个问题。
首先是 Airflow 的调度程序 运行 大约每秒 2 次。每次它创建数据库查询都会导致多个 DNS 查询。更改该日程安排可以缓解一些问题。
描述了我们遇到的另一个问题 here。如果 FQDN 中 .
的数量少于 x
,coredns
似乎被配置为尝试给定域的某些替代方案。该文章中有 2 个建议的修复方法。我们跟进了他们,DNS 查询的数量下降了。
我们也遇到过这个问题。
不是最容易找到的,因为我们有一个盒子,上面有很多应用程序,进行 1000 次 DNS 查询,请求对我们的 SQL 服务器名称进行 DNS 解析。
我真的很奇怪为什么 Airflow 不像其他应用程序那样只使用 DNS 缓存