如何獲得我的Google AppEngine應用程序執行更好更快的請求(即更少的加載時間和更少的CPU使用率)?我具體指的是應用程序服務器端部分的重要部分,而不是客戶端。Appengine優化
回答
使用appengine Appstats來查看您的應用程序實際使用更多cpu資源的位置。嘗試找出原因並尋找替代解決方案。 在python中,你可以做很多優化。中號
。利用內存緩存API使 數據讀取方便,快捷的。避免不必要的獲取()和獲取()。
避免做大量的RPC,而 使用db.reference()屬性。 Nick's blog就此解釋了這一點。
在appengine中的建模對性能有很大影響。確保你有適合你的應用的正確型號。
避免進行獲取和獲取,除非直到你真的需要它們。
我推薦使用Appstats來查看你的應用程序在哪裏存在瓶頸。
我使用memcache這顯着提高了我的應用程序的性能。我希望它也可以用於你。當將memcache與HTTP頭結合使用來設置緩存控制時,我在響應時間方面得到了顯着改進。
這不是一個真正的優化,但框架的選擇在這裏非常重要。 Java和Python中的大多數傳統框架(Django,..)並沒有設計爲快速啓動,因爲它在傳統託管中並不重要。考慮使用像Tipfy,Kai,Webapp,...(Python)或slim3,...(Java)的App Engine特定框架。
理想情況下,您應該組織數據,以便每個用戶請求只需要一次對數據存儲的調用,最好是db.get,因爲查詢速度明顯較慢。爲了達到這個目的,您通常需要對數據進行非規範化處理,並使用實體組和事務將不同副本保持同步。
當進行多個urlfetch或API調用時,可以通過使用非阻塞(異步)語法並行調用進程來加速進程。只要有可能,緩存當然是非常重要的。
如果您還沒有,我建議您觀看Google的IO會談(2010 & 2011),特別是今年的Scaling App Engine Applications,它在描述服務器端最佳實踐方面做得非常好。
一個經常被忽視的方面是不同的AppEngine相關服務支持異步處理,例如數據存儲:
https://cloud.google.com/appengine/docs/java/datastore/async
和網址提取:
https://cloud.google.com/appengine/docs/python/urlfetch/asynchronousrequests
如果你有請求執行各種任務,您可以看到它們是否可以並行化。
- 1. 蟒蛇appengine memcache優化
- 2. 在django Admin中優化ModelChoiceField管理(AppEngine)
- 3. 優化appengine實體密鑰的使用
- 4. AppEngine - 優化POST請求的讀取/寫入計數
- 5. C++優化/優化
- 6. 循環優化/ CoreData優化
- 7. 用jQuery優化圖像動畫以優化iPad優化
- 8. 優化
- 9. 優化
- 10. 優化
- 11. AppEngine性能優化與空閒實例和待定延遲設置
- 12. 如何優化AppEngine Java/JDO數據存儲put()以減少寫入數量
- 13. 凸優化 - matlab - 4D優化變量
- 14. adam優化器和動量優化器
- 15. 使用RequireJS優化的局部優化
- 16. 使用優化R優化矢量
- 17. JIT優化器是否優化乘法?
- 18. 使用r.js優化來優化模塊
- 19. JPA/Hibernate空值優化查詢優化
- 20. 谷歌速度優化的Css優化
- 21. PLSQL腳本優化/調優
- 22. 優化Mergesort
- 23. 優化的app.yaml
- 24. WPF XamdataGrid優化
- 25. 優化查詢
- 26. 優化查詢
- 27. SQL優化
- 28. 優化日期
- 29. 優化XSLT的
- 30. lighttpd fastcgi優化
關於可以在appengine上運行良好的java web框架,你可以查看我的框架thundr - http://3wks.github.io/thundr/它有很多專門針對appengine的框架支持,並且基礎啓動時間爲在appengine上約3.5秒。在appengine上進行試驗和測試,運行許多不同的部署,從基於內容的應用程序到工作流和單頁應用風格的交易。 – Nick 2015-07-16 00:35:20