0

我正在用 C 编写一个 web-spider 程序。现在我得到了一个 url 列表,首先我需要使用 function: 获取服务器 IP 地址getaddrinfo,然后发生了荒谬的事情:

在url的列表中大约有400万个url,前6000个url处理得很好,然后突然后面所有的url都失败了!getaddrinfo为每个 url 返回“名称解析中的临时失败”。此外,如果我从第一个“坏”网址重新启动程序,它会再次工作。

我真的很困惑,卡了2天,感觉DNS运行良好,但是一些有限的资源已经用完了,谁能给我一些建议?

4

3 回答 3

4

您可能在 DNS 服务器中遇到了某种速率限制。与所有网络问题一样,运行 Wireshark:检查失败的 DNS 请求是否真的被发送,如果是,他们会得到什么回复。

于 2012-04-04T09:46:48.860 回答
2

你是在调用freeaddrinfo()返回的地址信息吗?非常基本,但是由于您没有显示代码,因此这是首先想到的理论。

于 2012-04-04T09:47:15.943 回答
0

我想知道您的 ISP 是否以您的蜘蛛非常像蠕虫为由杀死了它。

考虑运行一个本地 DNS 递归器,例如PowerDNS 递归器,它可以提供已检索信息的缓存,完全自行执行查找——它不依赖于 ISP 提供的 DNS 服务器,因此不太可能对您的 ISP 的设备会影响您的程序。

于 2012-04-04T09:47:23.010 回答