gpt4 book ai didi

c# - HttpClient.GetAsync() CPU 消耗高

转载 作者:行者123 更新时间:2023-11-30 18:26:06 25 4
gpt4 key购买 nike

我有一个服务使用 HttpClient 类从其他服务获取一些资源。作为我们性能测试的一部分,我们模拟了 HttpClient.GetAsync() 调用以从外部服务中删除依赖项,并将其替换为从本地磁盘返回内容的方法。令人惊讶的是 CPU 利用率从 65% 上升到 22%。因此,当在没有 mock 的情况下进行性能测试时,CPU 利用率为 65%,而使用 mock 时则降至 22%。 但 RPS 保持不变

此外,当我开始增加负载时,CPU 利用率和 RPS 上升,我认为这是预期的。

我的问题是 - HttpClient.GetAsync() 是一个如此昂贵的操作吗?如果是,那么我如何通过性能分析来确认这一点?哪个工具可以帮助我。

注意:性能测试是使用 Visual Studio 负载测试框架以每秒 100 个用户负载运行的。

谢谢,贾韦德

最佳答案

我通常构建我的请求并使用 HttpClient.SendAsync(request),很少注意到 CPU 使用率的任何峰值。此外,每秒 100 个请求是一大堆请求。考虑重新设计您的架构,使其在重负载下表现更好。诸如减少对 HttpClient.SendAsyncHttpClient.GetAsync 的调用次数将提高您的性能。您还可以考虑在一组服务器之间进行负载平衡,以减少响应时间和 CPU 负载。另一个考虑因素是缓存对您与之交互的外部服务的响应,以减少外部 HTTP 调用。然后,您可以依赖缓存的响应,直到需要刷新缓存为止。

关于c# - HttpClient.GetAsync() CPU 消耗高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com