需要在大負載下找到服務器應用程序中的性能瓶頸。應用程序由單個服務實例(.asmx)和一些通過http請求的文件組成。我計劃解決這個問題的方法是:1)當服務器啓動失敗時得到異常情況2)分析當時的性能計數器和日誌以扣除造成這種情況的呼叫類型。ASP.NET Web Services + IIS性能診斷
爲了開始實現這個,我實現了一個特殊的客戶端,它發出兩種類型的請求,並使其無限期地重複相應的循環,希望在某些時候我會在WebMethod/GET url請求期間收到錯誤(NB - 標準的已有解決方案像JMeter和WAPT不能用於複雜的服務使用場景)。到目前爲止,我正在觀察的是服務調用中的響應時間增加以及文件加載期間的某些網絡超時異常(使用根據 - this thread引發的OperationCanceledException被認爲超時的HttpClient)。順便說一句,這很奇怪,因爲文件的大小很小,服務方法每個請求返回5-10mb的數據。認爲「更大」的請求更可能首先失敗。
Perfmon顯示CPU負載增加,絕對沒有內存尖峯/泄漏。請求執行時間計數器是非常隨機的,看起來不相關,隊列長度始終爲0.
也就是說,看起來像IIS處理我的臨時DDoS並同時使測試方法無效(響應時間增加意味着內存中的更多活動請求測試客戶端會導致內存溢出,並且我在收到數據後沒有對它做任何處理就已經刷新了數據)。
更多細節:服務器機器是4x3Ghz核心,4 Gb RAM。我生成每秒50-100個請求的負載,導致10-20 Mb/sec帶寬(測試客戶端位於服務器數據中心內的虛擬機上,4 Gbps NIC)。 30分鐘的測試會話是服務器和客戶端之間10-30Gb的純數據傳輸。
我怎樣才能讓Web服務/ IIS停止運行?
我正在尋找一種方法來實現服務器基礎架構的某些故障並找到性能瓶頸,但現在很明顯,蠻力方法無效。請刪除此問題。提前致謝。 – Jaded