2012-03-31 104 views
0

我是GAE的初學者,仍在評估是否應該將此用於我的學校項目。我需要證明一個應用程序的可擴展性,我想在這裏使用的定義是它是否可以同時爲1000個用戶服務。Google App Engine,在Appspot服務器上進行負載測試

現在負載測試是這樣做的一種方式。但是,當Google根據負載將應用程序擴展到多個不同的實例時,負載是徒勞的。

因此,我正在考慮模擬數據存儲讀取/寫入訪問memcache等,以顯示應用程序的可擴展性前景。

現在,使用JUnit Test是一個很好的方法。但他們只能在本地運行。有沒有辦法在服務器上運行它們,實際的生產環境?如果可以這樣做,那麼我可以只寫這些測試並通過eclipse執行它們,我應該完成!

另一種方式是使用硒的功能測試來模擬負載和實際的用戶條件,但這很可能會導致我的電腦崩潰,也不會同時發生。

另一種選擇是使用python加載測試腳本並使用示例json數據在服務器URL上發出請求。這然而我嘗試了,但我不能測試真正的用戶交互需要真正的用戶互動的選項,因爲活的網站需要谷歌登錄。

任何想法,我在哪裏繼續?

+1

我不太清楚我的理解你的問題。我不明白有關負載無用的部分 - 您預計Google會擴展應用程序以處理1000個用戶......所以......實質上,您只是想證明答案是肯定的?您是否試圖確定您可以在單個實例上投放多少個用戶?當你在App Engine上運行時,GAE會旋轉更多的實例。一個關心的問題就是在測試結束之前用完配額。 – dragonx 2012-04-01 05:05:04

+0

是的,這是真的,但我的意思是,應該有一種在服務器級進行數據存儲測試以模擬某種形式的行爲,可以說讀/寫實體100次或者類似的東西,可能是這個問題沒有適當的框架。 – redDragonzz 2012-04-01 09:03:49

回答

1

查看Siege(http://www.joedog.org/siege-home/)或JMeter(http://jmeter.apache.org/)以進行遠程測試您的應用程序。問題在於,在達到您要測試的極限之前,您將達到實際測試機器的極限,因此很多人啓動了一些EC2實例並從那裏運行負載測試。 Seige非常簡單,它只是從文本文件中讀取一個URL列表,並按照您的要求對服務器進行破壞。 JMeter允許您創建更強大的測試,可以執行諸如登錄到服務器之類的事情,並記錄關於應用程序行爲方式的更詳細的細節。

那些是兩個最好的免費和易於使用的工具(恕我直言)。

+0

這裏要指出的是,在整個GAE體驗中,緩慢的部分* IS *數據存儲,這是您實際需要加載測試的部分。您可以通過製作太多的數據存儲請求來破壞速度。獲取便宜,查詢不是。設置JMeter,記錄一堆網址,點擊它一段時間,然後進入並查看appstats以查看您的延遲時間。 – 2012-04-02 00:07:57

+0

要做到這一點,讓我們看看它是否工作。 – redDragonzz 2012-04-02 11:45:59

0

這聽起來像你真的想模擬數據存儲操作。

您可以編寫一個HTTP請求處理程序來加載您的junit測試並調用它們,然後將結果轉儲爲日誌或作爲HTTP結果。

如果它們需要很長時間才能運行,您可以在後端實例上運行它們。

根據Rick的建議,您也可以在後端實例上運行測試,該後端實例使用異步HTTP API向您的前端實例發出HTTP請求,並導致您的前端實例執行大量工作這就是你需要模擬的東西。

相關問題