
我們在 Azure 上部署了一個網站,其效能非常糟糕。當負載增加時,反應時間會增加到整分鐘! CPU 負載甚至不高,大約在 40% 區域(我們運行一個中等執行個體 (S2))。
經過多次調試(我不知道是什麼原因造成的),我終於偶然發現了一個“FREB”日誌,其中顯示請求正在排隊:
- AspNetStart Data1 =“GET”,Data2 =“/profiel/aanvullen”,Data3 =“”13:48:44.279
- AspNetReqQueued 13:48:44.810
- AspNetReq出列 13:49:39.545
- AspNetAppDomainEnter Data1="/LM/W3SVC/xxxx/ROOT-1-xxxxx
我認為 Azure 執行個體可以開箱即用地進行「最佳」配置,因此我不必擔心設定諸如maxconnection
或 之類的東西maxConcurrentThreadsPerCPU
。該網站不使用資料庫,但它確實調用了 2 個不同的 REST api,因此我認為那裡會發生排隊。我嘗試檢查該webrequest.ServicePoint.ConnectionLimit
屬性,但我記得它打印了大約 200 萬(或者可能是 max int)。
由於 CPU 使用率較低,Azure 不會啟動新實例,而且我認為另一個實例不會有幫助。
基本上我有兩個問題:
- 造成這種情況的原因是什麼/我應該改變什麼?
- 我該如何調試這個? Azure中有很多圖表和設定。我不確定在哪裡可以準確地看到我需要看到的內容。頻寬、對特定 Web 服務的開啟請求數量、其他內容等是否為瓶頸。