首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS:无法获得高吞吐量

IIS:无法获得高吞吐量
EN

Stack Overflow用户
提问于 2016-10-18 20:22:40
回答 1查看 112关注 0票数 0

我有一个IIS应用程序;在我们的应用程序的负载测试期间,我们发现吞吐量非常低。在尝试解决这个问题时,我们运行了一个测试负载来测试一个页面,该页面返回了大约1000字节的静态数据,并在控制器中休眠。我们发现,如果休眠持续时间大约为1秒,IIS无法在1秒内处理负载超过10 rps的请求。

现在,我了解了并发请求以及如何发布.Net 4.5,默认值为5000。那么,如果IIS正在处理5000个并发请求,为什么它不能以10 rps的速度处理请求,而每个请求需要1秒?数学是不合理的。

请注意,返回的是静态数据,数据大小很小,函数所做的全部工作就是休眠。因此,CPU、磁盘、网络等机器参数都不会超过限制。服务器几乎不闪烁。

这是完整的控制器代码

代码语言:javascript
复制
public ActionResult Contact()
{
    Thread.Sleep(1000);
    return View();
}

其中的视图返回一些静态HTML;我使用Visual Studio模板创建web应用程序;模板返回静态HTML。

当我移除休眠状态时,以高rps运行服务器是没有问题的。但随后请求完成得如此之快,以至于IIS甚至在高rps的情况下都不会遇到任何高并发。

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 20:37:09

是否所有的请求都属于同一个会话?如果是,this post会指出问题的原因。

从本质上讲,事实证明ASP.NET会话不是线程安全的,您不能拥有来自同一会话的并行请求。ASP.NET将简单地序列化调用并按顺序执行它们。这会导致调用Thread.Sleep()时看到的阻塞。

如果请求来自不同的会话,则不应该有阻塞。在任何情况下,您都可以尝试关闭会话:

代码语言:javascript
复制
<sessionState mode="Off" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40108154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档