繁体   English   中英

Asp.Net HttpClient性能

[英]Asp.Net HttpClient Performance

我使用Visual Studios负载测试项目加载/压力测试,当前用户设置得非常低。该应用程序向WebAPI服务层/应用程序(在某些情况下调用另一个WebApi层)发出多个System.Net.Http.HttpClient请求在测试单个MVC4控制器(不解析相关请求)时,它只获得大约30个请求/秒。

这些数据基于一个示例项目,其中除HttpClient调用之外的任何层都不执行实际代码,并构造要返回的新模型集合(因此一些序列化也作为WebApi的一部分发生)。 我已经尝试使用异步控制器和没有,结果似乎非常相似(与异步控制器略有改进)

缓存呼叫显然会大大增加(大约400 RPS),尽管数据和流量的性质意味着大量的呼叫不会在现实场景中缓存。

HttpClient(或一般的HTTP层)是否过于昂贵,或者您是否有一些想法可以获得更高的吞吐量?

值得注意的是,在我的本地开发机器上,此负载测试也会最大化CPU。 任何想法或建议将非常感激?

HttpClient内置默认值为2个并发连接。

你改变了默认值吗?

看到这个答案

我相信如果你追逐HTTPClient的deps,你会发现它依赖于ServicePointManager的设置。

看到这个链接

您可以通过调用System.Net.ServicePointManager.DefaultConnectionLimit来更改默认连接限制

您可以增加http客户端的并发连接数。 默认连接限制为2.为了找到最佳连接,请尝试计算机上12 *的CPU数量。

在代码中:在代码中:

ServicePointManager.DefaultConnectionLimit = 48;  

或者在Api.config或web.config文件中

<system.net>
    <connectionManagement>
      <add address="*" maxconnection="48"/>
    </connectionManagement>
  </system.net>

查看此链接了解更多详情。

暂无
暂无

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

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