2011-02-28 167 views
6

我們有.net客戶端運行在Windows 7嵌入式SQL Server Express。這些運行斷開連接,並且每隔一段時間都會撥入中央服務器並轉儲他們的信息並拉下相關的新信息。我們希望對整個分佈式系統進行壓力測試,並試圖考慮採用具有成本效益的方式來實現這一點。我們的一位開發人員有想使用亞馬遜雲並啓動1000個客戶端的想法,但他們只支持Windows服務器操作系統,並且看起來好像可能會花費一些錢,如果您必須多次重新運行測試。如何測試1000個客戶端的Windows 7客戶端

我們想過在一臺機器上模擬1000個客戶機,它們假裝有1000個客戶機,並且所有的調用都是異步的,但是如果你在一臺機器上運行,你的一些天花板將是RAM和一個處理器機器還是更大的系統,所以我不確定它給我們的照片「真實」。

所有的調用都發生在客戶端和服務器之間的WCF中。

任何人都有這方面的經驗,如果是的話,你是如何解決它的?

感謝,

超級提米

回答

1

你有沒有看SOASTA?他們提供基於雲的SOA負載測試。

+0

有一件事我還沒有弄清楚「雲」的東西 - 比如在SOASTA的情況下,它們是否讓你有能力加載Windows 7機器,然後根據需要多次克隆它。或者它更像是一個共享主機環境,讓他們訪問虛擬目錄並只允許你加載一些文件? – 2011-03-02 04:43:39

+0

考慮到它是一個服務接口,測試方並不需要是Windows 7客戶端,是嗎?您正在測試API,因此在給定工作流程和有效載荷的情況下,您應該能夠完成適當的負載測試,是的? http://www.soasta.com/technology/cloudtest-builder/wsdl-recording/ – andrewbadera 2011-03-02 12:16:56

0

分而治之,看看你是否可以將目標測試服務器連接到與開發者相同的交換機上。使用這些機器分隔客戶端,並讓每個人都對測試服務器運行。 (堅持使用同一個交換機可消除網絡影響,從而導致硬件結果的扭曲)

開發人員通常會有相當糟糕的機器,通常只有少數機器。這樣你就不會銷燬測試機器並可以監控發生的情況。

理想情況下,您可以在開發機器上使用Visual Studio 2010 Load Test代理。 這個工具將使您能夠在測試中監控所有機器的統計數據,並且非常清楚您的服務器如何響應。

如果運行測試測試的機器在本地主機上託管一個調用所需Web服務的網頁,可能是獲得測試結果的最佳選擇。

這取決於您的開發環境和Visual Studio許可安排的確切性質。

要弄清楚的關鍵之一是每個客戶端將使用WCF Web服務的請求數/秒數。一旦你有了這個數字,你就可以把這個數字除以每個測試機器的最大請求數/秒,以便找出需要多少臺測試機器。

爲了進行負載測試,您不需要擁有Web服務的「實際」客戶端。由於Web服務是一個界面,您可以模擬普通客戶端的活動,並在沒有正常「思考時間」暫停的情況下運行它,從而使您能夠測試1000個客戶端的負載,而無需運行每個客戶端的實例。

例如如果每個客戶端每分鐘訪問一次網絡服務,則每秒總共1000/60 = 16.7個呼叫。如果每個呼叫在3秒內完成,50個虛擬用戶將能夠創建相同的負載(50/3 = 16.7)。從經驗來看,運行Visual Studio負載測試的兩臺機器將能夠生成負載並且不會使CPU負載過重。

+0

這聽起來像是一個很糟糕的情況,但我希望能運行比開發者擁有更多計算機的實例。另一個問題是服務器在機架空間進行管理,所以我沒有物理訪問它。 – 2011-03-02 04:44:40

+0

單個開發機器應該能夠每2-3秒/虛擬用戶至多調用一次WCF Web服務,從而爲您提供每秒至少50個請求的吞吐量。 – Nat 2011-03-02 21:33:04

0

如果您通過HTTP使用WCF和基於文本的協議(這看起來很可能),那麼您可以使用許多工具。大多數Web負載測試工具都可以通過充當瀏覽器的代理來記錄HTTP流量,該瀏覽器通常也允許從富客戶端進行記錄。您可能需要對測試用例進行一些額外的定製,因爲這些工具已經過優化以模擬瀏覽器。我們已經爲我們的一些客戶完成了這項工作,並且工作得很好。

許多負載測試工具都支持從雲端產生負載(包括我們的Web性能負載測試器 - 以及其他像BrowserMob,LoadStorm等),所以開始評估這些 - 它將模擬1000個虛擬用戶既簡單又實惠。