2017-06-13 105 views
0

嗨,大家好我想用一個簡單的控制檯應用程序發送請求到服務而不需要等待。目標是每秒發送100個請求,而無需等待響應。我的想法是一次創建並運行10個線程,每個線程將創建一個http客戶端併發送請求。線程創建後等待100毫秒,然後再創建10個線程。代碼如下:發送恆定數量的http請求,無需等待

while (true) 
{ 
    try 
    { 
      for (int i = 0; i < 10; i++) 
      { 
       Task.Factory.StartNew(SendRequest); 
      } 
    } 
    catch (Exception) 
    { 
      // ignored 
    } 

    Thread.Sleep(100); 
} 

每個sendRequest將方法將打印HTTP狀態代碼的結果控制檯後得到http請求的結果。但我發現這個應用程序將成功打印前20個結果,這意味着線程已完成並銷燬。但在此之後,它將不再打印任何東西,但內存在增加,這意味着線程一直在創建但是正在旋轉。所以,你能幫助回答:

1)爲什麼線程在20個請求完成後掛起,是因爲http客戶端的連接限制?

2)如何不用等待代碼每秒發送常量請求?

+1

難道這些請求到一個單一的網址是什麼?單個主機?多個主機? – spender

+0

嘗試catch是無用的,因爲異常存儲在任務本身 – VMAtm

回答

0

可能是脫離主題,但如果您不需要在C#中執行此操作,則可以使用apache基準測試來執行此操作並進行測試。您可以控制併發性,時間和請求數量。

ab -c 10 -t 60 -n 6000 http://www.website.com/ 

如果它是在C#..然後難過,請不要介意