2011-01-05 100 views
3

我目前正在編寫一個負載測試應用程序,它利用Visual Studio 2010的負載測試。負載測試將模擬同一臺機器上的20個用戶,並且我需要一些數據在所有模擬用戶之間在內存中共享。Visual Studio負載測試虛擬用戶模擬

我很驚訝我找不到文檔回答以下問題:

從什麼其他的方式隔開每個虛擬用戶的運行方面?每個虛擬用戶是否在自己的過程中運行測試?也許在它自己的應用程序域?或者只是在自己的線程?我需要知道,因爲如果每個用戶都在自己的進程中運行測試,那麼所有內存中的高速緩存都不會共享,而是爲每個用戶創建,而不是爲所有用戶創建一次,這對我不利。

回答

1

您可以使用Process Explorer(http://technet.microsoft.com/en-us/sysinternals/bb896653它是任務管理器的高級版本)來獲取答案。

運行Visual Studio Load測試並打開Process Explorer。檢查是否正在創建新進程。然後找到Visual Studio進程並雙擊。然後選擇.NET性能選項卡,它應該顯示進程中所有AppDomain的列表。順便說一下,今天我們發佈了一個名爲StresStimulus的負載測試的提琴手擴展 - http://stresstimulus.stimulustechnology.com。我們將所有虛擬用戶保留在同一個進程中的不同線程上。

1

這是迄今爲止我發現的最接近答案。

http://blogs.msdn.com/b/billbar/archive/2007/06/13/coded-web-tests-and-web-test-plug-ins-should-not-block-the-thread.aspx

答案是,有每臺機器做負載測試單個進程,多線程的使用,但虛擬用戶「優化」的工作每線程多。

關於你想做什麼,用靜態構造函數創建靜態類將獲得所有虛擬用戶之間的共享內存塊。需要注意的是,這是一個多線程環境,應該對代碼採取適當的謹慎措施。

+1

這可能非常明顯,但請記住,任何依靠靜態類/變量在虛擬用戶之間共享數據的解決方案都不適用於多代理設置。 – agentnega 2011-10-07 19:18:14