繁体   English   中英

如何在短时间内调用大量的http请求

[英]How to call large number of http requests in a short period of time

我必须每隔几秒发送100,000个http请求,并且使用下面提供的代码发送请求需要19秒,而且时间长于我的间隔。

在此期间,CPU使用率和以太网使用率为100%。 我在具有更高带宽但结果相同的双处理器计算机中尝试过它。

有没有其他方法可以获得更好的表现。

protected async void btnStartCallWhenAll_Click(object sender, EventArgs e)
{
    t1 = DateTime.Now;
    // Make a list of web addresses. 
    List<string> urlList = SetUpURLList(Convert.ToInt32(txtNoRecordsToAdd.Text));

    // One-step async call. 
    await ProcessAllURLSAsync(urlList);

    t2 = DateTime.Now;
    double spent = t2.Subtract(t1).TotalMilliseconds;
    txtTimeElapsed.Text = " Time Spent :" + spent.ToString() ;
}
private List<string> SetUpURLList(int No)
{
    List<string> urls = new List<string>
    {
    };

    for (int i = 1; i <= No; i++)
        urls.Add("http://msdn.microsoft.com/library/windows/apps/br211380.aspx");

    return urls;
}
private async Task ProcessAllURLSAsync(List<string> urlList)
{
    ServicePointManager.UseNagleAlgorithm = true;
    ServicePointManager.Expect100Continue = true;
    ServicePointManager.CheckCertificateRevocationList = true;
    ServicePointManager.MaxServicePointIdleTime = 10000;
    ServicePointManager.DefaultConnectionLimit = 1000;

    IEnumerable<Task> CallingTasksQuery =
        from url in urlList select CallURLAsync(url);

    Task[] CallingTasks = CallingTasksQuery.ToArray();

    await Task.WhenAll(CallingTasks);
}

private async Task CallURLAsync(string url)
{
    var content = new MemoryStream();
    var webReq = (HttpWebRequest)WebRequest.Create(url);
    using (WebResponse response = await webReq.GetResponseAsync())
    {
    }
}

提到HttpWebRequest非常慢!

确保你已经设置了:

webReq.Proxy = null;

似乎WebRequest的启动将查找默认代理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM