【发布时间】:2015-03-25 13:29:35
【问题描述】:
我想我知道这里发生了什么,但希望得到确认和/或阅读材料,可以将“思考”变成“知道”,在 Tl,DR 部分的帖子末尾有实际问题:
场景:
我正在测试我的 MVC 应用程序,以解决其中一个内部组件停止运行(连接到我们的数据库时超时)的情况。
在我的一个网页上有一个 Jquery 数据表,它每半秒通过 ajax 查询一次更新 - 我当前的任务是在数据请求超时时显示正确的错误。所以为了测试,我创建了一个存储过程,要求数据库服务器在响应前等待 3 秒,这比配置的超时设置长 - 所以这保证了我可以捕获超时异常。
我正在 Chrome 浏览器中进行测试,一个客户端。 VS2013 IIS Express中正在调试应用程序
问题: 没想到激活故意减速后会出现以下症状:
1) 启动带有操纵数据表的页面后,应用程序在处理来自客户端浏览器的所有请求时变慢了 - 还有 3 个其他组件发送 ajax 更新请求,与我故意破坏的组件并行,这同样减慢也适用于我在 Web 应用程序中所做的任何会生成请求的操作(例如导航到其他页面)。浏览器的调试器显示请求正在按时发送,但服务器端的相应断点被击中要晚得多(延迟超过 10 秒甚至几分钟)
2) 即使在我关闭应用程序的选项卡后,我的服务器仍在处理请求。我关闭了浏览器,我确保 chrome.exe 进程已终止,但在 20 分钟后,各种控制器操作上的断点仍然受到攻击 - 主要是通过自动循环来自几个页面的 ajax 请求“触发”的操作我在我的测试期间试图访问。在我试图导航到的主页上也遇到了断点。在第二次测试中,我使用 RawCap 监控环回接口,以确保实际上没有任何东西在后台运行请求。
我想用另一种解释确认或否认的理论:
因此,上述场景是以服务器无法处理的频率发出循环请求 - 客户端数据表循环每 0.5 秒发送一次,每个请求至少需要 3 秒才能生成超时。显然,在 IIS express 的某个地方,它必须限制它能够处理的并发请求的数量......
让我感到惊讶的是,我有点假设如果达到了该限制(我也假设存在),那么请求将被拒绝 - 相反,它们似乎排队等待绝对无用的时间稍后处理 - 我的意思是,在什么情况下半小时后处理排队的 Web 请求会有用?
所以到目前为止我的问题是:
Tl,DR 问题:
IIS Express(Visual Studio 2013 附带)是否有并发连接限制?
如果是: { 这个限制是否可以在某个地方配置,如果可以,在哪里?
IIS express 如何处理达到该限制的情况 - 这种处理是否也可以在某处进行配置? (我的意思是像排队和即时错误,比如服务器很忙) }
如果没有: { 当请求来得快于处理速度时,服务器如何处理场景,并且可以在任何地方配置该处理吗? }
这里 - http://www.iis.net/learn/install/installing-iis-7/iis-features-and-vista-editions
我发现 IIS7 至少允许无限数量的同时连接,但是如果服务器的速度不足以处理所有请求,这实际上是如何工作的?可以在任何地方配置限制,以及处理达到的限制吗?
如果有任何上述在线阅读材料的链接,我们将不胜感激。
【问题讨论】:
标签: asp.net asp.net-mvc iis concurrency iis-express