我面臨着與Web服務請求的處理接下來的問題:Web服務的併發呼叫的處理
序言
在IIS 7.0上我已經
- 的Web API服務託管在本地機器上
- 測試線束控制檯在同一臺機器上的應用
,我試圖通過點擊測試工具應用生成的請求來模擬Web服務負載。 測試工具的核心代碼:
static int HitsCount = 40;
static async void PerformHitting()
{
{
await Task.WhenAll(ParallelEnumerable.Range(0, HitsCount)
.Select(_ => HitAsync())
.WithDegreeOfParallelism(HitsCount));
}
}
static async Task HitAsync()
{
// some logging skipped here
...
await new HttpClient().GetAsync(TargetUrl, HttpCompletionOption.ResponseHeadersRead);
}
期望
記錄顯示,所有HitAsync()調用同時進行:分別命中通過HttpClients曾在
[0開始; 0.1s]的時間框架(時間大致在這裏和下面四捨五入)。因此,我期望在Web服務端大致相同的時間內捕獲所有這些請求。
現實
但登錄在服務端示出了在束分組請求8-12請求中的每個和服務捕獲這些束與約1秒的時間間隔。我的意思是:
[0s, 0.3s] <- requests #0-#10
[1.2s, 1.6s] <- requests #10-#20
...
[4.1s, 4.5s] <- request #30-#40
而且對於任何重要的HitCount
值,我的執行時間非常長。
問題
我懷疑某種內置的服務限制的機制或框架內置的併發連接的限制。只有我發現與這種猜測相關的是that,但是我沒有得到任何成功嘗試從那裏soulutions。
任何想法是什麼問題?
謝謝。
構建負載在學習如何工作時,測試工具是一個很好的實踐,但是使用現有工具來完成這樣的工作幾乎總是更有成效。查看[SoapUI](http://www.soapui.org/)作爲示例那麼) –