2010-07-26 147 views
1

我們在經典的ASP環境中實現了一個新的解決方案,它使用COM interop來安裝.NET組件來完成一些工作。該解決方案運行良好,我們的團隊負責人希望確保它在負載下運行良好,因爲這是我們第一次在我們的網站上使用.NET組件。如何正確加載測試Web服務器上的新組件?

我需要考慮做一個適當的測試,以確保我引入的新代碼不會在負載下中斷?


我已經在做什麼:

我做了一個簡單的ASP網頁調用基於查詢字符串信息的新組件。查詢字符串也有一個「off switch」參數,所以我可以在沒有組件的情況下測試頁面作爲默認值。除了返回表示組件是否成功,失敗或被跳過的值之外,頁面本身是裸露的。

我寫了一個簡單的控制檯應用程序,它使用HttpWebRequest在每次調用時使用來自數據庫的唯一數據對ASP頁進行迭代調用。它所做的一切,並檢查頁面返回的值並保存數據。

然後,我將控制檯應用程序部署到我們內部網絡上的四臺不同PC上。在一次測試中,我在每臺計算機上設置了一個應用程序實例,而在另一個實例中,我在每臺計算機上設置了五個應用程序實例,並將它們配置爲同時開始同時啓動開發服務器。每個應用程序實例向Web服務器發出150次迭代請求。

對於每個場景(每臺機器上一個實例&在每臺機器上有五個實例),我運行了兩次測試,一次沒有調用組件,一次調用組件。在這兩種情況下,被調用的組件的性能比未調用該組件時花費的時間大約是完成請求的2.2倍。考慮到我們正在處理的大量處理以及數據庫更新數據的次數,我們認爲這並不是很昂貴。另外,因爲在我們用4個併發連接訪問服務器的情況下,以及當我們用20個併發連接訪問服務器的情況下,2.2x比率看起來都很合適,所以似乎運行正常。

20個實例的測試肯定會給我們的開發服務器帶來很多負載,無論是否運行新組件,但新組件在壓力下看起來都不錯。但是,我想確保我以正確的方式進行操作,並沒有指出通過弱測試的正面過程來證明我的組件在高峯負載下不會使服務器滿足其需求。

回答

1

Visual Studio有一個負載測試組件,但你所做的事實質上是一回事。 Visual Studio解決方案的好處在於,您可以看到性能可能出現的瓶頸。

關鍵看你通過或未測試不應該是「是完成比好了時間?」,而是「是好的,相比定負載的總響應時間?」。因此與新組件的比較是相關的。

您的測試似乎是足夠嚴格的說「不負載下破」,但在現場的硬件和真正的網頁任何其他處理的隔離測試,它不是一個保證。

你有沒有衡量每秒請求的總數是多少?如果該值是高於你期望的峯值負載下的實際應用和響應時間是合理的,那麼你就必須在測試的結果有一定的信心,成爲一個真正的利好。

+0

感謝您的答覆。我測量完成請求的平均時間,所以我想你可以說我每秒測量的請求數。我想我的觀點是,在重負荷和輕負荷下,引入我的組件可以將響應時間增加相同的百分比。 – 2010-07-29 02:30:02

+0

另外,是不是測試組件只在VS 2010終極版,這是$ 10,000 SKU?我記得理查德在dotNetRocks Road Show上做了一個很酷的演示。 – 2010-07-29 02:31:00

+0

它也是在2008年的測試版。 具有相同的比率表明這是一個可預測的努力量​​,這是一個相當好的跡象,但最終的衡量標準將在絕對條件下「花費太長時間」,無論持續多久。如果你真的敲擊了組件,它仍然以X秒作爲響應(無論你認爲響應時間需要多長時間),你可以給它一個「勾號」。 – Nat 2010-07-29 21:55:50

1

有像Push-to-Test和Gomez這樣的公司,我們已經用它來證明大規模應用程序可以工作。兩者都模擬大量的用戶通過你的應用程序採取指定的路徑。 (就戈麥斯而言,他們有實際用戶的機器,他們向運行測試的業主支付便士)。他們可以模擬數千個併發用戶並提供其他服務,例如正常運行時間監控。

兩者都是付費服務,但Push-to-Test基於Selenium的軟件,因此您可能能夠構建(或查找)構建於其上的負載測試框架。