我們在經典的ASP環境中實現了一個新的解決方案,它使用COM interop來安裝.NET組件來完成一些工作。該解決方案運行良好,我們的團隊負責人希望確保它在負載下運行良好,因爲這是我們第一次在我們的網站上使用.NET組件。如何正確加載測試Web服務器上的新組件?
我需要考慮做一個適當的測試,以確保我引入的新代碼不會在負載下中斷?
我已經在做什麼:
我做了一個簡單的ASP網頁調用基於查詢字符串信息的新組件。查詢字符串也有一個「off switch」參數,所以我可以在沒有組件的情況下測試頁面作爲默認值。除了返回表示組件是否成功,失敗或被跳過的值之外,頁面本身是裸露的。
我寫了一個簡單的控制檯應用程序,它使用HttpWebRequest
在每次調用時使用來自數據庫的唯一數據對ASP頁進行迭代調用。它所做的一切,並檢查頁面返回的值並保存數據。
然後,我將控制檯應用程序部署到我們內部網絡上的四臺不同PC上。在一次測試中,我在每臺計算機上設置了一個應用程序實例,而在另一個實例中,我在每臺計算機上設置了五個應用程序實例,並將它們配置爲同時開始同時啓動開發服務器。每個應用程序實例向Web服務器發出150次迭代請求。
對於每個場景(每臺機器上一個實例&在每臺機器上有五個實例),我運行了兩次測試,一次沒有調用組件,一次調用組件。在這兩種情況下,被調用的組件的性能比未調用該組件時花費的時間大約是完成請求的2.2倍。考慮到我們正在處理的大量處理以及數據庫更新數據的次數,我們認爲這並不是很昂貴。另外,因爲在我們用4個併發連接訪問服務器的情況下,以及當我們用20個併發連接訪問服務器的情況下,2.2x比率看起來都很合適,所以似乎運行正常。
20個實例的測試肯定會給我們的開發服務器帶來很多負載,無論是否運行新組件,但新組件在壓力下看起來都不錯。但是,我想確保我以正確的方式進行操作,並沒有指出通過弱測試的正面過程來證明我的組件在高峯負載下不會使服務器滿足其需求。
感謝您的答覆。我測量完成請求的平均時間,所以我想你可以說我每秒測量的請求數。我想我的觀點是,在重負荷和輕負荷下,引入我的組件可以將響應時間增加相同的百分比。 – 2010-07-29 02:30:02
另外,是不是測試組件只在VS 2010終極版,這是$ 10,000 SKU?我記得理查德在dotNetRocks Road Show上做了一個很酷的演示。 – 2010-07-29 02:31:00
它也是在2008年的測試版。 具有相同的比率表明這是一個可預測的努力量,這是一個相當好的跡象,但最終的衡量標準將在絕對條件下「花費太長時間」,無論持續多久。如果你真的敲擊了組件,它仍然以X秒作爲響應(無論你認爲響應時間需要多長時間),你可以給它一個「勾號」。 – Nat 2010-07-29 21:55:50