2011-05-18 44 views
0

如何獲得我的Google AppEngine應用程序執行更好更快的請求(即更少的加載時間和更少的CPU使用率)?我具體指的是應用程序服務器端部分的重要部分,而不是客戶端。Appengine優化

回答

3

使用appengine Appstats來查看您的應用程序實際使用更多cpu資源的位置。嘗試找出原因並尋找替代解決方案。 在python中,你可以做很多優化。中號

  1. 。利用內存緩存API使 數據讀取方便,快捷的。避免不必要的獲取()和獲取()。

  2. 避免做大量的RPC,而 使用db.reference()屬性。 Nick's blog就此解釋了這一點。

  3. 在appengine中的建模對性能有很大影響。確保你有適合你的應用的正確型號。

  4. 避免進行獲取和獲取,除非直到你真的需要它們。

1

我推薦使用Appstats來查看你的應用程序在哪裏存在瓶頸。

1

我使用memcache這顯着提高了我的應用程序的性能。我希望它也可以用於你。當將memcache與HTTP頭結合使用來設置緩存控制時,我在響應時間方面得到了顯着改進。

1

這不是一個真正的優化,但框架的選擇在這裏非常重要。 Java和Python中的大多數傳統框架(Django,..)並沒有設計爲快速啓動,因爲它在傳統託管中並不重要。考慮使用像Tipfy,Kai,Webapp,...(Python)或slim3,...(Java)的App Engine特定框架。

理想情況下,您應該組織數據,以便每個用戶請求只需要一次對數據存儲的調用,最好是db.get,因爲查詢速度明顯較慢。爲了達到這個目的,您通常需要對數據進行非規範化處理,並使用實體組和事務將不同副本保持同步。

當進行多個urlfetch或API調用時,可以通過使用非阻塞(異步)語法並行調用進程來加速進程。只要有可能,緩存當然是非常重要的。

如果您還沒有,我建議您觀看Google的IO會談(2010 & 2011),特別是今年的Scaling App Engine Applications,它在描述服務器端最佳實踐方面做得非常好。

+0

關於可以在appengine上運行良好的java web框架,你可以查看我的框架thundr - http://3wks.github.io/thundr/它有很多專門針對appengine的框架支持,並且基礎啓動時間爲在appengine上約3.5秒。在appengine上進行試驗和測試,運行許多不同的部署,從基於內容的應用程序到工作流和單頁應用風格的交易。 – Nick 2015-07-16 00:35:20