Google App Engine上Java 应用性能优化

日期: 2011-02-15 作者:丁亮 来源:TechTarget中国 英文

  使用Memcache进行缓存

  使用缓存主要是为了提高响应速度。

  HTML页面

  页面可以根据功能来划分进行缓存,请参考:应用memcached提升站点性能——减少读自数据库和数据源。当然,也可以缓存整个页面,简化缓存及模板处理逻辑。

  数据查询结果

  如果你是直接使用GAE DatastoreService来进行数据查询,那么有必要缓存查询结果:

  单一实体

  根据唯一标识进行查询的实体。

  集合实体

  根据组合查询条件查询的实体,例如分页结果。

  Memcache使用注意

  调用GAE Memcache也是会消耗一定CPU的(需要进行序列化/反序列化),使用GAE MemcaheService#clearAll()方法会清除所有命名空间的缓存

  减少内存使用

  减少内存使用主要是为了充分利用有限的Memcache服务,降低实例启动时间。

  尽量避免使用框架

  虽然目前一些流行的Java Web框架(Spring、Struts、Play!、etc)是可以运行在GAE上的,但如果你想尽量免费地使用GAE,那最好还是不要使用现有框架,因为,大多数框架:

  •   不是专门为GAE设计的
  •   比较消耗内存
  •   将延长启动时间

  另外,关于JSP与其他模板引擎的优劣取舍问题这里不讨论。目前经测试无页面缓冲情况下,FreeMarker与JSP性能非常接近。

  无状态设计

  有状态的设计是比较吃内存的,服务端最好少使用有状态的模型,除非要处理复杂的业务逻辑(例如多步表单、高级搜索)。

  异步APIs

  GAE提供了数据存取、HTTP请求等APIs的异步版本。但需要注意:目前GAE/J(1.4.0)中的Query是没有异步APIs的,AsyncDatastoreService或者DatastoreService上使用PreparedQuery.asIterable()与PreparedQuery.asIterator()效果一样,都是调用了就返回,迭代时才真正去获取数据。

  阻塞(同步)点

  异步APIs调用后的代码块中要注意在哪个点进行同步,过早进行同步将降低异步APIs带来的优势。调用异步APIs与调用同步APIs消耗同样的配额

  其他

  静态资源

  仔细配置appengine-web.xml中<static-files>元素,这些资源将从单独的Google服务器、缓存获取,并不占用应用服务器配额。

  实体组

  实体组是具有一定逻辑关系的、保存在同一GAE云存储区域的实体集。事务操作只能针对同一实体组的实体操作。实体组对性能有一定影响(目前尚未实践证明影响有多大),但请尽量保持实体组的最小化。

  域名解析

  GAE送的二级域名(*.appspot.com)在国内访问非常不稳定,所以最好绑定绑定自己的域名。但绑定域名时需要配置 GHS IP,目前在国内已经没有 IP 可用。进一步,需要配置反向代理来进行请求代理。在服务端性能优化后需要选择一个速度快、稳定的反向代理。不然,辛辛苦苦在服务端优化降低了几百 ms 的处理时间,结果全耗在路由、丢包上了。如果免费的反向代理实在不能够满足性能需要,只能自己打个付费的了,或者等到 GHS 可用……

  实现逻辑

  另外,目前GAE给的免费CPU配额比较少,所以优化实现逻辑以减少CPU、APIs使用也是非常关键的。写代码时应该时刻注意代码的逻辑是否足够简洁,能一次性获取的参数就别重复获取,获取后以方法参数的形式进行传递。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

丁亮
丁亮

相关推荐

  • 数字化转型:如何更好地利用API和微服务

    API,即应用程序编程接口,它提供给应用程序、开发人员访问其它应用的能力,而又无需访问源码,无需理解内部工作机制细节;简单地说,API就是实现应用与应用连接的一种隐形的桥梁。

  • 金融行业数字转型:利用API构建新IT基础

    从制造业、物流业,银行业到零售业,各行各业的根基都因应用经济的兴起发生着深刻的变革。在互联网和智能手机普及化的推动下,这种现象变得司空见惯。到2021年 ,蓬勃发展的全球应用经济的预估总值将达到6.3万亿美元,相比2016年的1.3万亿美元,增长近5倍。

  • 如何使用Azure API管理服务?

    在云和微服务架构时代,API是数字化业务的通用语言。根据分析公司Forrester Research预测,仅在美国,API管理工具的支出将在未来5年内达到近30亿美元。

  • 私有存储云如何构建?

    如何构建自己的私有存储云呢?在这之前,我们要先退后一步,思考一下云计算到底意味着什么。