c# - 使用本地 Visual Studio 负载测试在 ASP.NET MVC 和 IIS 中进行异步/等待的概念验证

标签 c# iis async-await load-testing

我创建了这两个 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/

相关文章:

c# - 过滤用户列表 asp.net 身份

asp.net - 如何使用 IIS 管理器 7.0 设置虚拟目录的 ASP.NET 版本?

c# - ASP.Net 服务器上的进程无法通过 IIS 正确运行

javascript - 如何在 React-router 包装器中处理异步请求

c# - 如何用尽 ASP.NET 工作线程来显示异步等待模式的重要性

c# - 对于具有 12K+ 类的 C# 解决方案,SonarQube 报告没有依赖项、0 缠结索引?

C# 相当于 python 中的 rjust

c# - 如何让 VS 假定所有内容默认都是公开的

asp.net - 在虚拟目录中运行时,System.Web.Optimization 包为空

node.js - 使用 mocha 测试异步/等待时使用 done() 的正确方法