我正在用C编写一个web-spider程序。现在我获得了一个url的列表,首先我需要使用函数getaddrinfo
来获取服务器IP地址,然后发生荒谬的事情:
在网址列表中有大约4,000,000个网址,第一个大约6,000个网址被处理得非常好,然后突然所有的网址都落后了! getaddrinfo
为每个网址返回“名称解析暂时失败”。另外,如果我从第一个“坏”网址重新启动程序,它会再次运行。
我真的很困惑并且坚持了2天,我觉得DNS运行良好,但是有些资源已经用完,有人可以给我一些建议吗?
答案 0 :(得分:4)
您可能在DNS服务器中遇到某种速率限制。 与所有网络问题一样,运行Wireshark:检查实际发送失败的DNS请求是否正在发送,如果是,那么他们得到了什么回复。
答案 1 :(得分:2)
您是否就返回的地址信息致电freeaddrinfo()
?非常基础,但由于你没有展示你的代码,这是我想到的第一个理论。
答案 2 :(得分:0)
我想知道你的ISP是否杀死了你的蜘蛛,理由是它的行为非常像蠕虫。
考虑运行本地DNS recursor,例如PowerDNS recursor,可以提供已经检索到的信息的缓存和将完全自己执行查找 - 它不依赖于ISP-提供DNS服务器,因此ISP设备的速率限制不太可能影响您的程序。