我创建了这两个 Action :
public string Sync()
{
Thread.Sleep(2000);
return "Hello, Sync!";
}
public async Task<string> Async()
{
await Task.Delay(2000);
return "Hello, Async!";
}
我在 IIS (Windows 10) 下托管它们。我使用 Visual Studio 2015 Ultimate 以本地环境作为实验室创建了负载测试。我正在对 100 个虚拟用户进行恒定模式测试。
我的期望是,当应用程序池的线程数少于 100 时,异步操作将获得更好的结果(运行更多的测试和更好的平均页面响应时间)。但我得到的两个测试的结果相同。两个测试都设置为运行 1 分钟。
我尝试修改大量选项。在 aspnet.config 中,我设置了以下设置:
我尝试设置为 8、12、100,同步和异步方法的结果始终相同:
17 秒平均页面时间 总测试:289 4.82 测试/秒
知道我做错了什么吗?我希望异步方法的平均页面时间为 2 秒,因为不应阻塞任何线程。
最佳答案
原来,非 Windows Server 版本的 IIS 有最多 10 个并发请求的限制:Does IIS 7 have limit of simultaneous requests?
我希望我早点知道这一点......但是,我希望它能帮助将来的人。
关于c# - 使用本地 Visual Studio 负载测试在 ASP.NET MVC 和 IIS 中进行异步/等待的概念验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324139/