鉴于在并行请求100个URL同时为10000个网址,我会收到以下错误他们50-5000应用程序(有时):无法解析DNS
远程名不能解决'www.url.com'
据我所知,该错误意味着DNS服务器无法解析的网址。但是,对于每次运行,无法解析的网址数量都会发生变化(从50到5000)。
我是否提出太多要求太快?我可以这样做吗? - 在功能更强大的服务器上运行相同的测试,表明只有10个网址无法解析 - 这听起来更实际。
,做并行请求代码:
var semp = new SemaphoreSlim(100);
var uris = File.ReadAllLines(@"C:\urls.txt").Select(x => new Uri(x));
foreach(var uri in uris)
{
Task.Run(async() =>
{
await semp.WaitAsync();
var result = await Web.TryGetPage(uri); // Using HttpWebRequest
semp.Release();
});
}
你能展示这个并行工作的最基本的代码吗? – Haney
@DavidHaney,完成:-) – ebb
似乎你可能只是用并发请求重载DNS服务器,或者类似地,你的Web实例/类是静态的(或者有静态成员),并且所有任务都共享连接会有奇怪的结果。 – Haney