【发布时间】:2016-03-31 22:59:21
【问题描述】:
我有一个 WebAPI 服务,用于测试托管在 Azure 中的吞吐量。我已将其设置为使用可配置编号(IE webservice/api/endpoint?delay=500)调用 Task.Delay。当我通过 Fiddler 对端点运行时,一切都按预期工作,延迟等。
我使用 VS Enterprise 创建了一个负载测试,并使用我的一些免费云负载测试分钟数在 2 分钟内对 500 个并发用户进行了猛烈抨击。多次运行负载测试后,平均测试时间约为 1.64 秒。我已关闭测试的思考时间。
当我在 Fiddler 中与负载测试同时运行我的请求时,我看到了亚秒级的响应,即使是在向执行按钮发送垃圾邮件时也是如此。我的负载测试有效地做同样的事情并获得 1.64 秒的响应时间。
我错过了什么?
在我的单元测试中运行的代码(然后在我的负载测试中调用):
var client = new HttpClient { BaseAddress = new Uri(CloudServiceUrl) };
var response = client.GetAsync($"{AuthAsyncTestUri}&bankSimTime={bankDelay}&databaseSimTime={databaseDelay}");
AuthAsyncTestUri 是我的云托管服务的端点。
【问题讨论】:
-
我认为您需要在问题中添加更多详细信息,否则人们只会猜测问题。从通过 Fiddler 发出的一个呼叫更改为通过 Visual Studio 尝试同时发出 500 个请求是一个巨大的飞跃。您是否按照我的 cmets 中关于我的回答的建议尝试了阶梯式负载?如果是,那么它揭示了什么?
-
我已编辑问题以包含单元测试的代码。我确实尝试在 5 个用户负载下运行它,并且看到平均测试时间不到 500 毫秒,这与我在 Fiddler 请求中看到的相符。我仍在试图弄清楚为什么 500 用户测试的时间急剧增加,而 Fiddler 请求在 500 用户测试中间运行时保持不变。
-
你有什么想法,如果单元测试用于负载测试场景,为什么负载测试结果不显示“平均响应时间”?
标签: visual-studio load-testing