2011-05-18 50 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