多个HttpClient异步请求的性能

时间:2018-02-12 08:07:58

标签: c#

我遇到了HttpClient异步请求的性能问题。 我想对不同的IP发出多个请求,并将JSON API内容作为字符串。

当我使用单个实例时,在~3个请求后性能下降。 当我使用处理时,可以接受一个,但不能用于多个请求。

这是我的代码和结果:

private static readonly HttpClient ClientPublic = new HttpClient();        
public async Task<string> GetURL(string url)
{            
    var watch = System.Diagnostics.Stopwatch.StartNew();
    string URLString = await ClientPublic.GetStringAsync(url).ConfigureAwait(false);
    watch.Stop(); 

    addtolist(watch.ElapsedMilliseconds.ToString(), url);
    return URLString;
}

单个URL(ms)的结果:205 155 640 640 590 651 681 590

public async Task<string> GetURL2(string url)
{
    var watch = System.Diagnostics.Stopwatch.StartNew();

    using (var ClientPublic2 = new HttpClient())
    {
        using (var result = await ClientPublic2.GetAsync(url))
        {
            string URLString = await result.Content.ReadAsStringAsync();
            watch.Stop();
            addtolist(watch.ElapsedMilliseconds.ToString(), url);
        }
    }            
    return URLString;
}

单个URL(ms)的结果:208 686 198 190 141 271 131 119

当我通常调用多个(10)URL时,一个实例方法会产生更好的结果,但总有2-3个请求具有相当高的响应时间。

我通过浏览器插件检查了请求的网址,并且所有响应都是&lt; 200毫秒。 我可以找到什么来诊断这个问题吗?

0 个答案:

没有答案