2013-08-23 43 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? –