2013-08-23 51 views
3

我有一个aspx页面,它通过Jquery Ajax请求异步加载10个图表。正在向实现IReadOnlySessionState的泛型处理程序发出请求,因为需要访问会话变量,但它是读取操作,并且这种方式不受asp.net实现的读写会话锁定的影响。每个会话的线程限制?

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

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

+0

哪来的你正在谈论的AJAX或服务器的限制。在服务器上,由于创建一个新线程的代价很高,因此线程池中的线程被挑选出来,我认为它有25个线程的限制。如果你正在谈论浏览器(AJAX请求),那应该取决于任何特定浏览器的实现 – Anand

+0

有一个属性称为ThreadPool.SetMaxThreads,你可以探索 – Anand

+2

据我所知,浏览器限制并发请求发送到服务器。我无法找到链接,只要我抓住它就会发布。 – Nilesh

回答

0

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

参见: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拥有比workerthread更多的IO线程。

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

+0

线程池无法创建多于2个线程的问题... – Servy

+0

我不认为这是相关的,我也在使用.net 3.5对不起,忘记了提及它。虽然谢谢! – AntSpiteri

+0

您使用的是哪个版本的IIS? –