每个会话的线程限制?

时间:2013-08-23 14:01:38

标签: c# asp.net .net iis

我有一个aspx页面,它通过Jquery Ajax请求异步加载10个图表。正在向实现IReadOnlySessionState的Generic Handler发出请求,因为需要访问会话变量,但它是一个读取,这样我就不会受到asp.net实现的读写会话锁的影响。

通过调试器,我能够看到调用是异步发生的,但似乎存在一个限制,因为有些调用仅在前几个调用完成后才进入代码。我不确定这是在IIS上的设计还是web.config中的属性。

一个用户/会话一次可以拥有的线程数限制吗?

1 个答案:

答案 0 :(得分:0)

IIS和asp.net处理线程的方式取决于您使用的IIS版本。 workerthreads的数量是有限制的,并且必须保留的线程数量有上限。这意味着一次只能执行一定数量的线程。

请参阅:http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

  

如果您的ASP.NET应用程序使用的是Web服务(WFC或ASMX)或   System.Net可以通过HTTP与后端进行通信   增加connectionManagement / maxconnection。对于ASP.NET   应用程序,autoConfig功能限制为12 * #CPU。

同样来自同一篇文章:http://support.microsoft.com/kb/821268

如果您长时间运行来自AJAX的HTTP请求,最好的办法是进行异步http请求处理程序。然后请求可以在IO线程上等待,因为asp.net拥有比workerthreads更多的IO线程。

请参阅:http://www.asp.net/web-forms/tutorials/aspnet-45/using-asynchronous-methods-in-aspnet-45