使用本地 Visual Studio 负载测试在 ASP.NET MVC 和 IIS 中为 async/await 进行概念验证
Making a proof of concept for async/await in ASP.NET MVC and IIS using local Visual Studio Load Test
我创建了这两个动作:
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.82Tests/Sec
知道我做错了什么吗?我希望异步方法的平均页面时间为 2 秒,因为不应阻塞任何线程。
I tried modifying plenty of options. In aspnet.config I set the following settings:
听起来你试图削弱 ASP.NET 以便异步版本领先。
只要线程不稀缺,async IO 就没有优势。它在 运行ning 时使用较少的线程和内存,但 CPU 使用率略高。 None 只要我们不在 100 个线程中,这个问题就很重要。
如果您想实际查看此操作 运行 1000 个并发请求。您会看到不同之处。我不确定 "virtual users" 是什么,ASP.NET 不关心。重要的是parallelism/concurrency.
的有效程度
您可以想出任意高或低的差异。平均需要的线程数是 requestsPerSecond * requestDurationInSeconds
.
我会 link 向您展示我关于是同步还是异步的标准帖子,因为我觉得您对异步 IO 何时合适并不绝对清楚。
为什么EF 6教程使用异步调用?
我们应该切换到默认使用异步 I/O 吗?
事实证明,非Windows 服务器版本的 IIS 有最多 10 个并发请求的限制:Does IIS 7 have limit of simultaneous requests?
我希望我早点知道这一点...但是,我希望它对以后的人有所帮助。
我创建了这两个动作:
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.82Tests/Sec
知道我做错了什么吗?我希望异步方法的平均页面时间为 2 秒,因为不应阻塞任何线程。
I tried modifying plenty of options. In aspnet.config I set the following settings:
听起来你试图削弱 ASP.NET 以便异步版本领先。
只要线程不稀缺,async IO 就没有优势。它在 运行ning 时使用较少的线程和内存,但 CPU 使用率略高。 None 只要我们不在 100 个线程中,这个问题就很重要。
如果您想实际查看此操作 运行 1000 个并发请求。您会看到不同之处。我不确定 "virtual users" 是什么,ASP.NET 不关心。重要的是parallelism/concurrency.
的有效程度您可以想出任意高或低的差异。平均需要的线程数是 requestsPerSecond * requestDurationInSeconds
.
我会 link 向您展示我关于是同步还是异步的标准帖子,因为我觉得您对异步 IO 何时合适并不绝对清楚。
为什么EF 6教程使用异步调用? 我们应该切换到默认使用异步 I/O 吗?
事实证明,非Windows 服务器版本的 IIS 有最多 10 个并发请求的限制:Does IIS 7 have limit of simultaneous requests?
我希望我早点知道这一点...但是,我希望它对以后的人有所帮助。