刚刚安装了IIS Express 7.5,我正在尝试调试ASP.NET MVC 3应用程序中的并发问题。但是,我似乎无法让Web服务器同时处理请求,它们只是逐个执行。
我正在运行Apache Bench来模拟并发负载,但它刚刚排队等待。
有人有任何想法吗?
感谢。
答案 0 :(得分:25)
如果您正在使用会话并为会话请求重用会话ID,那么ASP.NET会对请求进行排队,因为它需要对每个请求的会话进行独占锁定。
取自http://msdn.microsoft.com/en-us/library/ms178581.aspx
并发请求和会话状态
对于每个会话,访问ASP.NET会话状态是独占的,这意味着 如果两个不同的用户发出并发请求,则访问每个用户 同时授予单独的会话。但是,如果两个并发 请求是针对同一会话进行的(使用相同的SessionID) value),第一个请求获得对会话的独占访问权 信息。第二个请求仅在第一个请求之后执行 已完成。(第二个会话也可以获得访问权限 锁定信息被释放,因为第一个请求超过了 锁定超时。)如果@Page中的EnableSessionState值 指令设置为ReadOnly,即只读会话的请求 信息不会导致会话数据的独占锁定。 但是,会话数据的只读请求可能仍需要等待 对于由会话数据的读写请求设置的锁定来清除。
答案 1 :(得分:0)
你的web.config中没有任何奇怪的内容,例如maxConcurrentRequestsPerCPU,maxConcurrentThreadsPerCPU的设置?