我有一批我想要获取的网址。该列表包含具有不同域名的URL(超过50.000),但所有域使用相同的负载平衡服务器ip。
对于每个网址,我想记录其结果代码,其获取持续时间以及内容的哈希及其重定向标头。
当前方法每秒大约10次提取,响应时间约为半秒。
如何更快地执行以下操作?
我目前有以下代码构造:
Parallel.ForEach(domainnames, ProcessItem);
ProcessItem
基于以下内容:
static void Fetch2(Uri url)
{
HttpWebResponse response;
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = false;
response = (HttpWebResponse)request.GetResponse())
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
if (response == null) return;
using (response)
{
// Process response.....
}
}
我已应用以下配置:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" />
</connectionManagement>
</system.net>
我尝试了以下内容:
async
与Task.WaitAll(Task[])
一起使用,但这会导致很多错误,因为所有任务都会快速创建非常,但几乎所有任务都会导致连接错误。有趣的观察是: