【问题标题】:Programming HttpClient for high performance为高性能编程 HttpClient
【发布时间】:2018-09-05 15:16:24
【问题描述】:

我设置了一个仅返回 the default page 的 Azure 网站。从 .Net Core 2.1 调用此链接的响应时间为几毫秒。然后我尝试使用 HttpClient 发送 1000 个并发请求。该批次平均在 27 秒内完成。

class Program
{
    static void Main(string[] args)
    {
        Task.WhenAll(Enumerable.Range(0, 1000).Select(i => Get(i)));
    }

    static HttpClient client = new HttpClient();
    static async Task Get(int i)
    {
        var response = await client.GetAsync("http://testinghttpclient.azurewebsites.net/");
        var content = await response.Content.ReadAsStringAsync();
    }
}

每 1000 个请求 27 秒对我来说似乎太慢了。我正确使用 HttpClient 吗?如果是这样,您能否帮助我了解在这种情况下我的限制资源是什么?

【问题讨论】:

  • 你在没有ReadAsStringAsync的情况下测量过时间吗?
  • 顺便说一句,您的代码在我的网络上运行时间仅为 00:00:02.1045089,所以这实际上取决于您的网络容量
  • 感谢 Veikedo。就是这样——限制带宽的是我的本地网络。
  • 另外,请记住there are concurrency limits

标签: .net .net-core


【解决方案1】:

问题是从 IDE 运行它。以发布模式发布它并从命令行运行它可以将执行时间缩短到一秒钟。

【讨论】:

  • 感谢您的更新,我对这个感到困惑。您是否使用 Visual Studio 来完成此任务?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多