我使用Visual Studios负载测试项目进行负载/压力测试,当前用户设置为10时很低。应用程序向WebAPI服务层/应用程序发出多个System.Net.Http.HttpClient请求(在某些情况下,它会调用另一个WebApi层/应用程序),并且在测试单个MVC4控制器(不解析依赖请求)时,它只能获得大约30个请求/秒。Asp.Net HttpClient性能
这些数字基于一个示例项目,其中没有真正的代码在除HttpClient调用之外的任何层执行并构建要返回的模型的新集合(所以一些序列化也发生为WebApi的一部分)。我已经尝试了异步控制器和没有,结果似乎非常相似(异步控制器略有改善)
虽然数据的性质和交通手段显然缓存调用显着增加(大约400 RPS)相当数量的呼叫不会被缓存在真实世界的场景中。
HttpClient(或一般的HTTP层)太贵了,还是有一些想法可以获得更高的吞吐量?
可能值得注意的是,在我的本地开发机器上,这个负载测试也使CPU最大化。任何想法或建议将非常感激?
这真的很难提供建设性的反馈意见时,有涉及到这么多的变量,可以更改默认的连接限制。你的服务是否在同一台机器上运行,不同的机器上,有多少网络跳转,你是否穿越域名等?由于您正在讨论调用可调用其他Web API服务的Web API服务,因此您的请求中可能会有很多延迟。 –
我见过HttpClient在开发机器上对本地web api执行12000 reqs/sec。但是有很多因素需要考虑。 HttpClient不应该增加很多开销。 –
示例应用程序包含一个应用程序中的所有层,所有这些层都在我的开发机器上本地运行。 它很有希望听到你已经看到12000 HttpClient请求/秒。 – Timmo