2014-10-20 260 views
-3

當運行一個C#程序在多線程環境中生成多個網絡請求時,我發現Request.GetRequestStream非常慢,有時需要幾秒鐘,並且通常是後續GetResponse的兩倍。即使Proxy已被設置爲空,即「標準」修復。GetRequestStream非常慢

這是什麼原因?

+0

當然,在大約20分鐘的網頁搜索中並沒有出現這種情況。 – 2014-10-20 21:23:49

回答

0

原來,.NET, by default, has a default limit of 2 for simultaneous connections。這當然會嚴重扼殺任何顯着多線程的應用程序,並且延遲將出現在GetRequestStream調用中。

「修復」是改變默認的限制會更合理搭配:

ServicePointManager.DefaultConnectionLimit = newConnectionLimit; 

我在VMware上運行的Windows搖搖晃晃的Mac似乎處理20 OK的價值,但有些護理應採取這個數字是一個很大的數字,可以讓更多的資源被捆綁起來而不會增加性能。

+0

你確定回答那一個很快。 – Xela 2014-10-20 21:16:46

+0

我提交了一個問題/答案,使信息在SO上找到。上述「重複」在約20分鐘的搜索中沒有彈出。 – 2014-10-20 21:26:33