DNS 无法解析大量请求中的某些域名

DNS 无法解析大量请求中的某些域名

我需要检查 200kk(200,000,000)个域的可用性和 CMS 信息。

我正在使用 php 7.1 并模拟多线程检查。

硬件和配置

  1. 服务器硬件:多核 CPU、64GB RAM、SSD 磁盘、500 Mbits 专用带宽(OVH 服务器)。
  2. 在 resolv.conf 中有 Google DNS: 8.8.8.8 / 8.8.4.4
  3. ulimit -n 设置为 655350
  4. nload 测量带宽负载

测试

我使用不同数量的并行线程检查了数据库中的前 1,000,000 个域。这样做之后,我面临的问题是,随着线程数量的增加,在 30 秒超时内未响应的域数量大幅增加。以下是结果。

1. 1000 个线程

测试:1,000,000 个域,1000 个并行线程,85 Mbits 平均带宽负载,1 小时检查时间。结果:65% 已成功解决其中 35% 未能通过超时解决。

2. 300 个线程

测试:1,000,000 个域,300 个并行线程,70 Mbits 平均带宽负载,2 小时检查时间。结果:85% 已成功解决其中 15% 未能通过超时解决。

概括

我们可以看到,线程数增加了 3 倍,带宽并没有增加 3 倍。我们得到的是未解析/因超时而访问的域数量大幅增加。因此,检查速度提高了 2 倍。

问题

检查的瓶颈在哪里?我如何才能充分利用 500 Mbits 带宽?我应该使用自己的 DNS 服务器吗?如果是,正确的配置是什么?任何想法或帮助都非常感谢。

更新 1

Google DNS 可能正在限制您的速率。使用您自己的递归 DNS 解析器(或其中几个)应该是第一步。

我尝试使用默认配置绑定(DNS 服务器),没有进行调整。我得到了巨大的绑定负载,结果几乎相同。

有没有关于如何调整 bind 以处理每天 20 万到 50 万个请求的想法?我们可以将另一台服务器用作 DNS 服务器。也许我们可以使用备用 DNS 服务器(不是 bind)?

相关内容