【发布时间】:2014-02-10 22:52:19
【问题描述】:
我正在使用 Visual Studios 负载测试项目进行负载/压力测试,当前用户设置为 10 非常低。该应用程序向 WebAPI 服务层/应用程序发出多个 System.Net.Http.HttpClient 请求(在某些情况下调用另一个 WebApi 层/应用程序),并且在测试单个 MVC4 控制器(不解析依赖请求)时,它仅获得大约 30 个请求/秒。
这些数字基于一个示例项目,其中除了 HttpClient 调用之外的任何层都没有执行任何实际代码,并构建了一个新的模型集合以返回(因此,一些序列化也作为 WebApi 的一部分发生)。我已经尝试过使用和不使用异步控制器,结果似乎非常相似(使用异步控制器略有改进)
缓存调用显然会显着增加(大约 400 RPS),尽管数据和流量的性质意味着在现实世界场景中不会缓存大量调用。
HttpClient(或一般的 HTTP 层)是否过于昂贵,或者您有什么想法可以提高吞吐量?
可能值得注意的是,在我的本地开发机器上,这个负载测试也会最大限度地利用 CPU。任何想法或建议将不胜感激?
【问题讨论】:
-
当涉及的变量如此之多时,很难提供建设性的反馈。您的服务是否全部运行在同一台机器上,不同的机器上,有多少网络跃点,您是否跨域等等?您的请求可能会有很多延迟,因为您正在谈论调用可能调用其他 Web API 服务的 Web API 服务。
-
我已经看到 HttpClient 在开发机器上针对本地 Web api 执行 12000 个请求/秒。然而,有很多因素需要考虑。 HttpClient 不应该增加很多开销。
-
示例应用程序包括一个应用程序中的所有层,所有层都在我的开发机器上本地运行。很高兴听到您已经看到 12000 HttpClients req/sec。
标签: asp.net asp.net-mvc-4 asp.net-web-api load-testing dotnet-httpclient