我有一個IIS應用程序;在我們的應用程序的負載測試期間,我們發現吞吐量非常低。在嘗試解決問題時,我們運行了一個測試負載測試頁面,該頁面返回約1000字節的靜態數據,並在控制器中進行睡眠。我們發現,如果睡眠持續時間大約是1秒,IIS將無法在1秒內爲超過10 rps的負載提供請求。IIS:無法獲得高吞吐量
現在我瞭解了Concurrent Requests和.Net 4.5,默認值是5000.所以如果IIS正在處理5000個併發請求,那麼它如何在10 rps時無法處理請求,每個請求都取1第二?數學不加起來。
請注意,返回靜態數據,數據大小很小,並且所有功能都是休眠。所以沒有CPU,磁盤,網絡等機器參數超限。服務器幾乎不閃爍。
這是整個控制器代碼
public ActionResult Contact()
{
Thread.Sleep(1000);
return View();
}
在那裏的視圖返回一些靜態HTML;我使用Visual Studio模板創建了Web應用程序;該模板返回靜態HTML。
當我刪除睡眠,然後我沒有問題在高rps運行服務器。但是,然後這些請求完成得如此之快,甚至在高rps時IIS甚至不會遇到任何高併發性。
我有一個簡單的C#的負載測試程序 HttpWebResponse objWebResponse =(HttpWebResponse)objRequest.GetResponse(); 從多個線程調用以獲得所需的負載。沒有明確的會話創建。這會導致IIS上的同一會話嗎?由於我沒有發回任何會話信息,我猜不是。 – Amit
除非另有說明,否則會有一個會話ID作爲響應中的cookie發回。如果後續請求一起發送該cookie,則ASP.NET將把它們全部視爲同一會話的一部分。嘗試關閉會話狀態並查看它是否適用於您的情況值得一試。 – Connor
我會嘗試;但我們不會通過該負載生成器發回Cookie。 – Amit