IIS 6.0 萬用字元映射基準?
我很快就愛上了 ASP.NET MVC beta,我決定在部署到我的 IIS 6 託管環境時不會犧牲的一件事是無擴展 URL。因此,我正在權衡添加萬用字元映射的考慮,但我閱讀的所有內容都表明使用此方法時可能會影響性能。但是,我找不到任何實際的基準!
這個問題的第一部分是,你知道我在哪裡可以找到這樣的基準,還是只是一個未經檢驗的假設?
問題的第二部分是關於我在我們的開發伺服器上使用 jMeter 通過 100Mbs 連接執行的 2 個負載測試。
背景資訊
我們的託管服務提供商有一個 4Gbs 的可突發網際網路管道和一個用於我們 VLAN 的 1Gbs 骨幹網,因此我可以通過辦公室區域網路生成的任何內容都應該很好地轉換為託管環境。
測試場景是載入多個圖像/css 文件,因為當請求現在通過 ASP.NET ISAPI 過濾器(通常不會通過它)傳遞的文件時,假定的性能會受到影響。每個測試包含 50 個執行緒(模擬使用者),每個執行緒執行 1000 次迭代的請求腳本。每個測試的結果發佈在下面。
測試結果
沒有萬用字元映射:
樣品:50,000 平均響應時間:428ms 錯誤數:0 每秒請求數:110.1 每秒千字節:11,543使用萬用字元映射:
樣品:50,000 平均響應時間:429ms 錯誤數:0 每秒請求數:109.9 千字節每秒:11,534兩個測試都是熱執行的(一切都在記憶體中,沒有初始負載偏差),從我的角度來看,性能差不多。在兩次測試期間,CPU 使用率約為 60%,記憶體正常,網路使用率穩定在 90-95% 左右。
這是否足以證明通過所有內容的 ASP.NET 過濾器的萬用字元映射不會真正影響性能,還是我遺漏了什麼?
編輯:11 個小時,沒有一條評論?我希望有更多..大聲笑
克里斯,非常方便的文章。
許多提出性能劣勢的人推斷,Web 應用程序中處理的程式碼與標準工作流程中處理的程式碼有一些不同/劣勢。基本程式碼類型可能不同,並且您肯定需要 MSIL 解釋器,但 MS 已經表明,在許多情況下,您實際上會看到 .NET 執行時的性能比本機執行時有所提高。
考慮 IIS 如何成為“萬事通”也是明智之舉——即使在靜態文件上也允許進行各種配置和覆蓋。其中一些是為提高性能(記憶體、壓縮)而設計的,並且 - 實際上 - 除非您在程式碼中重新實現它們,否則它們會失去,但其中許多是用於其他目的,可能永遠不會被使用。如果您(僅)為您的需要而建構,您可以忽略那些其他部分,並且應該實現某種性能優勢,即使存在潛在的 ASP.NET 劣勢。
在我的(非 .NET)MVC 測試中,我看到與 Web 表單相比具有相當大的(10 倍或更多)性能優勢。即使對靜態內容有一點影響——這也不是一顆難以下嚥的藥丸。
在您的測試中差異幾乎可以忽略不計,我並不感到驚訝,但我很高興看到它得到支持。
注意:您可以在 IIS 中禁用來自靜態目錄的萬用字元映射(我將所有靜態文件保存在 /static/(pics|styles|…) 中)。將文件夾切換到應用程序,刪除萬用字元映射,然後將其從應用程序切換回來 - 瞧 - 靜態文件由 IIS 處理,而不會打擾您的 ASP.NET。