如何获得我的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实体密钥的使用
- 2. 用jQuery优化图像动画以优化iPad优化
- 3. 优化
- 4. 优化
- 5. AppEngine性能优化与空闲实例和待定延迟设置
- 6. 谷歌速度优化的Css优化
- 7. 使用优化R优化矢量
- 8. adam优化器和动量优化器
- 9. 使用r.js优化来优化模块
- 10. JIT优化器是否优化乘法?
- 11. JPA/Hibernate空值优化查询优化
- 12. PLSQL脚本优化/调优
- 13. 优化innodb表
- 14. 图像优化
- 15. postgresql.conf优化
- 16. MySQL的优化
- 17. 优化方法
- 18. 优化表
- 19. 查询优化
- 20. 优化HttpWebResponse - GetResponse
- 21. 查询优化
- 22. 圆角优化
- 23. SQL Server优化
- 24. 优化查询
- 25. css优化
- 26. 查询优化
- 27. 计划优化
- 28. Pypy(Python)优化
- 29. 查询优化
- 30. Objective-C优化
关于可以在appengine上运行良好的java web框架,你可以查看我的框架thundr - http://3wks.github.io/thundr/它有很多专门针对appengine的框架支持,并且基础启动时间为在appengine上约3.5秒。在appengine上进行试验和测试,运行许多不同的部署,从基于内容的应用程序到工作流和单页应用风格的交易。 – Nick 2015-07-16 00:35:20