getaddrinfo():名称解析暂时失败

时间:2012-04-04 09:39:23

标签: c linux web-crawler

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

在网址列表中有大约4,000,000个网址,第一个大约6,000个网址被处理得非常好,然后突然所有的网址都落后了! getaddrinfo为每个网址返回“名称解析暂时失败”。另外,如果我从第一个“坏”网址重新启动程序,它会再次运行。

我真的很困惑并且坚持了2天,我觉得DNS运行良好,但是有些资源已经用完,有人可以给我一些建议吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您是否就返回的地址信息致电freeaddrinfo()?非常基础,但由于你没有展示你的代码,这是我想到的第一个理论。

答案 2 :(得分:0)

我想知道你的ISP是否杀死了你的蜘蛛,理由是它的行为非常像蠕虫。

考虑运行本地DNS recursor,例如PowerDNS recursor,可以提供已经检索到的信息的缓存将完全自己执行查找 - 它不依赖于ISP-提供DNS服务器,因此ISP设备的速率限制不太可能影响您的程序。