每个会话的线程限制

本文关键字:线程 会话 | 更新日期: 2023-09-27 18:28:50

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

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

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

每个会话的线程限制

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

请参阅: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的IO线程比workersreads多得多。

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