2010-08-27 37 views
9

我想基準GAE讀取性能。正在從數據存儲中獲取大約10,000個實體。這些實體包含3個屬性名稱(約16個字符),描述(約130個字符)和時間戳。沒有什麼特別大的。Google App Engine上的CPU帶寬是否太貴或是我的代碼?

這是我看到:

上的平均約需11秒讀取10k的實體。不確定這是否被認爲是快速,緩慢或合理,但無論如何都不太刺激。

更有趣的發現是CPU測光。 執行此讀取操作100次會消耗大約3.0個CPU小時。成本是0.30美元。

鑑於此處沒有CPU密集型算法,難道它不會使GAE的CPU帶寬相當昂貴​​嗎? (肯定的是,它配備了全天候SYS-管理員在Python腳本等等等等,但仍形式...)

或者是這個東西在我的Java代碼:

http://github.com/akirekadu/GAE-Evaluation/blob/master/show.jsp

+0

這對我來說聽起來不合理,通過互聯網每秒1000個實體對象......通過互聯網選​​擇3500個實體(每個包含比您的示例更多的數據)的快速測試花費了大約三秒鐘。你知道有多少數據正在傳輸嗎? – darri 2010-08-27 15:53:27

+0

@darri,「數據存儲」是內部GAE設施 – 2010-08-27 16:43:43

+0

(a)我提到的*時間不包括網絡往返。閱讀實體需要花費時間(並構建HTML代碼)。 (b)所提取的數據大致爲3 MB。 – akirekadu 2010-08-27 16:48:09

回答

5

這是不是你的代碼,我相信你的結果。在我們自己的實驗中,我們發現在CPU配額方面,檢索和(特別是)存儲是非常昂貴的操作。

我們注意到:

  • 索引是昂貴的。如果你寫的不僅僅是閱讀,而且對你的索引要小心。確保你知道模型屬性的indexed=False屬性,並密切關注自動生成到index.yaml中的內容。

  • 如果您閱讀的內容比寫作內容多,那麼大量的多指標可能會有意義。儘可能使用memcache。如果它們有意義,請使用實體組。

  • 應用程序引擎API爲您提供了提高效率的工具。他們很重要。如果您正在編寫100行,則使用單個bulk put()與100個獨立put()調用將大大減少CPU使用量。

如果你的程序是要經常進行大讀爲你所描述,您不妨選擇不同的解決方案(例如,像Slicehost或一個的Linode VPS)或不同的數據模型。每個應用程序都有不同的需求,WRT磁盤,CPU,內存等,因此我將後臺計算作爲練習讀者。

HTH!

相關問題