【问题标题】:Is DNS query on client OS serilaized?客户端操作系统上的 DNS 查询是否已序列化?
【发布时间】:2010-12-10 08:53:19
【问题描述】:

即使您在 Linux 或 Windows 上发出多个并行异步 DNS 解析请求(以编程方式),操作系统是否会序列化请求并且不会将它们全部并行发送出去?

正如我在 gethostbyname 或 DnsResolve API 在最低层序列化的地方所读到的,甚至有人编写了这个 async-dns python 库来显着加快 DNS 解析速度

http://www.catonmat.net/blog/asynchronous-dns-resolution

那么是否有任何 .NET API 或一般情况下它可以根据我的程序给出的请求数量并行工作?

想象一个网络爬虫场景,我每秒需要大量的 dns 查询,在一些早期的网络爬虫出版物中,提到 dns 成为瓶颈。

【问题讨论】:

  • 我窒息了。看来确实连载了……
  • 是的。我需要一个用于 c# 的并行库

标签: asynchronous dns web-crawler


【解决方案1】:

在 Linux 下,gethostbyname() 将有效地被序列化,尤其是因为它在得到答案之前实际上不会返回给调用者。但是,这取决于库的实现,而不是执行此操作的 O/S。

还有很多其他库可以替代gethostbyname,它们确实执行完全异步解析,允许同时进行多个查询。一个特别好的此类库是 libunbound,它是 Unbound 递归 DNS 服务器分发的一部分。

【讨论】:

  • 在 Windows 上是否有适合 .NET 的异步库?
猜你喜欢
  • 2016-09-06
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2011-08-23
  • 1970-01-01
  • 2013-10-11
相关资源
最近更新 更多