【发布时间】:2016-10-18 20:37:08
【问题描述】:
我有一个 IIS 应用程序;在我们的应用程序的负载测试期间,我们发现吞吐量非常低。在尝试解决问题的同时,我们运行了一个测试——对一个返回大约 1000 字节静态数据的页面进行负载测试,并在控制器中休眠。我们发现,如果睡眠持续时间约为 1 秒,IIS 无法在 1 秒内以超过 10 rps 的负载处理请求。
现在我阅读了并发请求以及如何发布 .Net 4.5,默认值为 5000。因此,如果 IIS 正在处理 5000 个并发请求,为什么它无法以 10 rps 的速度处理请求,每个请求需要 1 秒?数学不加起来。
注意返回的是静态数据,数据量很小,所有的功能都是休眠。因此,CPU、磁盘、网络等机器参数都没有超出限制。服务器几乎不眨眼。
这是整个控制器代码
public ActionResult Contact()
{
Thread.Sleep(1000);
return View();
}
那里的视图返回一些静态 HTML;我使用 Visual Studio 模板创建了 Web 应用程序;模板返回静态 HTML。
当我取消睡眠时,我在高 rps 下运行服务器没有问题。但随后请求完成得如此之快,以至于 IIS 甚至在高 rps 下都不会遇到任何高并发。
【问题讨论】: