2012-01-13 11 views
2

我有一個Web應用程序,允許您粘貼大量的URL(從2000 - 15000的任何地方),然後訪問每個頁面以下載源代碼並做一些處理。具有大量線程的ASP.NET Web應用程序,最有效的方法

我已經嘗試了幾種方法,目前它使用ajax一次一個地發送每個url到一個WebMethod,然後使用ThreadPool.QueueUserWorkItem將請求推送到一個隊列上,並在可以處理的時候執行處理線程正在同時運行。這似乎會導致問題(Visual Studio Web服務器偶爾死掉,這是不好的)。

只是想知道如果任何人做了類似的事情,知道一個更好的方法。我想能夠扼制併發線程的數量有點幫助。

謝謝

+0

卡西尼不是爲了處理這種負載。你應該用它來代表它的用途。 – 2012-01-13 21:08:44

回答

2

請勿使用內置的網絡服務器。使用IIS正確

+0

我打算改變它(仍然會),但是認爲它可能更多地與它一次完成的工作量有關,而不是Web服務器? – JeremyBeadle 2012-01-13 21:17:09

+0

我的猜測是它是網絡服務器....檢查了這一點 http://www.developer.com/net/deciding-on-a-microsoft-web-server-cassini-iis-and-iis-express。 html 嘗試使用IIS7.5 Express進行設置並嘗試它相對比較容易。 它也在做什麼樣的處理?如果你正在做多線程的東西,也許你遇到了死鎖等等,不知道你對這個主題知道多少,或者你正在做什麼,所以這裏有一個鏈接http://msdn.microsoft.com/en-us/雜誌/ cc163618.aspx – Jordan 2012-01-13 22:33:19

1

與上面提到的一樣使用IIS,您可能會從使用異步Web請求中受益。 (有關詳細信息,請參見How to use HttpWebRequest (.NET) asynchronously?)。

這將防止每個線程上執行的阻塞量,如果處理過程不太重要,這會減少所需的線程數。

相關問題