创新触手可及: 使用 WebSphere eXtreme Scale 增强 WebSphere Portal 和 IBM Web Content Manager 性能

在启用了高级缓存时,IBM WebSphere® Portal 中的 IBM® Web Content Manager 可使用 dynacache 实例存储从 Web Content Manager 获取的呈现内容。这种缓存改善了响应时间并减少了数据库上的负载。WebSphere eXtreme Scale 和 XC10 缓存设备提供了 dynacache 实现,它将缓存的内容存储在一个弹性的数据网格中,而不使用默认的 dynacache 实现(后者将缓存的内容存储在 IBM WebSphere Application Server 堆空间中或磁盘上)。本文介绍将 WebSphere Portal 高级缓存内容转移到一个 XC10 缓存设备所托管的数据网格中的重大性能收益,这一转移无需任何应用程序代码更改。 本文来自于 IBM WebSphere Developer Technical Journal 中文版

Benjamin Parees, 软件工程师, IBM

Ben PareesBen Parees 当前是 IBM 的顾问软件工程师。过去六年他作为软件工程师在 IBM 工作。前两年参与 WebSphere Business Monitor 产品的数据库体系结构设计,其中大量采用了维建模技术。



Wanjun Wang, 系统验证测试架构师, IBM

Wanjun Wang 是 WebSphere Portal System Verification Test 架构师,研究 Portal/Web Content Management/Personalization 和其他中间件已有多年。他监督 Portal/WCM 版本的系统测试战略,这包括测试配置、可靠性运行和自动化。他还积极参与针对大型部署的高端客户咨询。Wanjun 在美国 IBM Research 三角公园实验室工作。



Ramakrishna Boggarapu, 咨询软件工程师, IBM

Rama Boggarapu 是 IBM 的一名咨询软件工程,拥有 9 年丰富经验。他最近加入了 WebSphere eXtreme Scale 开发团队,并在 Integration 小组工作。在这之前,Rama 是 WebSphere Application Server Level 2 支持团队的领导者,被评为 WebContainer、Session Management、Dynamic Cache 和 Classloader 组件的主题专家。Rama 拥有电子和通信专业的学士学位。



2012 年 9 月 13 日

每一期创新触手可及都从开发人员和从业者角度提供与新兴技术相关主题的新信息和讨论,并针对领先 IBM® WebSphere® 产品进行深入分析。

简介

IBM WebSphere eXtreme Scale 是 IBM 基于软件的战略性弹性缓存平台。WebSphere eXtreme Scale 是一个基于 Java™ 的内存型数据网格,它动态地处理、分区、复值和管理数百个服务器上的数据和业务逻辑。WebSphere eXtreme Scale 在丰富的缓存场景中提供了极高的灵活性。

WebSphere eXtreme Scale 非常灵活。可在数据网格中添加或删除服务器,数据网格将自动重新分配以最佳地使用可用的资源,同时仍然提供对数据的持续访问以及无缝容错能力。WebSphere eXtreme Scale 提供了成熟的多数据中心功能,可轻松地与其他 IBM 应用程序基础设施产品相集成,为您的企业提供一种强大、高性能的弹性缓存解决方案。

IBM WebSphere DataPower® XC10 Appliance 在一种易于部署的设备规格中提供了 WebSphere eXtreme Scale 的优势。每个 XC10 设备都提供了 240 GB 的缓存容量和简化的管理用户界面,用于创建和监视数据网格以及设备健康状况。设备可分组到高度可用的集合中,提供故障转移功能,以及增加总体缓存容量和吞吐量。

IBM Web Content Manager 包含在 IBM WebSphere Portal 中,以提供一个健壮的 Web 内容管理解决方案。它用于创建、管理和交付您的 Web 站点的内容。您可以使用 Web 内容编写 portlet 或创建自己自定义的编写界面来创建内容。存储在外部内容管理系统中的 Web 内容也可在一个 Web Content Manager 系统中引用。您可以使用 Web 内容查看器 portlet (Web Content Manager servlet) 传送 Web 内容,或者将您的站点预先渲染为 HTML。Web 内容查看器 portlet 是广泛用来显示 Web Content Manager 内容的选项。Web Content Manager 基本缓存默认已设置并用于渲染 servlet。Web Content Manager 仅支持高级缓存,通过 portlet 进行渲染。因此,Web 内容查看器 portlet 可从高级缓存的改进中获得最大收益。


传统应用服务器缓存的限制

将内容直接缓存在应用服务器 JVM 中,这有一个明显的好处:访问缓存内容非常快,因为无需网络往返传输。不幸的是,它也具有许多限制(参见图 1):

  • 缓存最大大小受 JVM 中的可用堆限制。大型且装满的 JVM 堆可能导致较长时间的垃圾收集暂停,延长应用程序响应时间。
  • 在 JVM 集群中,内容将冗余地缓存在每个 JVM 中,导致对可用缓存空间的低效使用。
  • 一个新启动的 JVM 必须填充它的缓存,在缓存是暖时,这意味着较长的初始响应时间和较高的后端内容源负载。
图 1. 传统的 dynacache 拓扑结构
图 1. 传统的 dynacache 拓扑结构

将缓存内容从应用服务器卸载到一个数据网格,可解决所有这些问题(参见图 2):

  • 总缓存大小可通过 WebSphere eXtreme Scale 所提供的功能弹性地缩放,同时保持应用服务器 JVM 对或应用服务器硬件限制的完全独立。
  • 缓存内容未存储在应用服务器 JVM 中,因此不会增加垃圾收集负载。
  • 缓存内容在应用服务器之间共享,这意味着每一项都仅缓存一次,新启动的服务器可直接访问其他服务器以前缓存的项,而无需独立地从后端内容源抓取副本。
图 2. WebSphere eXtreme Scale dynacache 拓扑结构
图 2. WebSphere eXtreme Scale dynacache 拓扑结构

WebSphere eXtreme Scale 和 XC10 设备提供了将 dynacache 内容卸载到数据网格的集成支持。所有这些只需将 WebSphere eXtreme Scale 客户端安装到 WebSphere Application Server 实例中并配置要卸载的 dynacache 实例。此配置有诸多优势,包括可能比应用服务器堆将支持的缓存大得多但不会存储在磁盘上的缓存,在应用服务器实例之间共享的缓存,以及可在应用服务器重新启动后幸存的缓存内容。

本文的剩余部分将介绍作者运行的一些性能测试,以确定使用此机制将 Web Content Manager 高级缓存 dynacache 实例卸载到部署在两个 XC10 设备上的动态网格的好处。


基准测试场景

对于这一系列测试中的基准测试活动,我们部署了一个静态水平 WebSphere Portal 集群,它包含两个节点和一个 IBM HTTP Server。我们使用开箱即用的维基模板在一个数据库填充 6 个总共 50 GB 的 Web 内容库。每个维基内容项均包含文本和图像。有 6 个 WebSphere Portal 页面,每个页面拥有一个 Web 内容查看器 portlet,它从一个 Web 内容库渲染一个维基。开箱即用的维基 portlet 一次显示 10 个为一组的维基内容项(按标题排序)。因为每个维基有数千个维基项,因此用户可能会处理超过 1000 个列表页面。

对于测试,每位用户:

  1. 登录到 WebSphere Portal。
  2. 随机导航到 6 个渲染维基的门户页面中的一个。
  3. 随机转到一个列表页面,并通过单机维基内容链接查看页面上的每个维基项。
  4. 重复第 2 和 3 步 10 次。
  5. 注销。

用户操作之间有 10 秒的 “思考时间”。两个有趣的用户事务是:转到一个列表页面和查看一个维基项。

我们测试了 Web Content Manager 的 3 种缓存配置:

  1. 在第一个场景中,我们使用 Web Content Manager 基本缓存,其中渲染 portlet 不会获得缓存优势。这代表着应用服务器堆不够,不足以利用高级缓存的情形。
  2. 在第二个场景中,我们打开高级缓存并将它调节为基于用户负载的最大大小,JVM 堆限制为 4GB。这在每个 WebSphere Portal JVM 中提供了一个包含 5000 个条目的缓存,用于 Web Content Manager 高级缓存。
  3. 对于卸载的 dynacache 场景,我们使用在一个集合中配置的两个 XC10 缓存设备来存储最多包含 100 万个缓存条目的缓存内容。
图 3. 拓扑结构图,包括 XC10
图 3. 拓扑结构图,包括 XC10

为了卸载 Web Content Manager 高级缓存,我们将特定的 dynacache 实例(“processing” 缓存)配置为使用 WebSphere eXtreme Scale dynacache 提供程序,而不是默认的提供程序。然后我们将配置指向 XC10 集合上托管的数据网格。请注意,取决于 WebSphere eXtreme Scale 在多个数据网格分区之间部署缓存的方式,指定的缓存大小 12000 会得到大约 100 万个条目的总缓存大小(参见图 4)。

图 4. Dynacache 实例配置
图 4. Dynacache 实例配置

我们使用该基准测试来运行两个用例:

  • 在第一个用例中,我们允许系统热启动两小时,然后度量在一个 4 小时时间段运行 300 个用户负载的吞吐量和响应时间。这使我们能够观察到大型数据网格缓存相对于没有缓存或者只有较小的本地缓存时的优势。
  • 在第二个用例中,我们模拟了一种冷启动来启动服务器,然后立即应用负载并度量前 30 分钟的负载时间内的吞吐量和响应时间。这使我们能够了解将一个新服务器上线或由于维护而重新启动一个服务器的影响。

基准测试结果

稳定的状态

在稳定状态场景中,我们在使用卸载的大型负载时观察到了大量实在的收益(参见图 5)。当启用高级缓存时,吞吐量(每秒的请求数)增加了 15%,而在将 Web Content Manager 高级缓存卸载到 XC10 时,又增加了 25%。与 Web Content Manager 基本缓存场景相比,使用 XC10,吞吐量增加了 44%。

图 5. 稳定状态吞吐量对比(越高越好)
图 5. 稳定状态吞吐量对比(越高越好)

使用高级缓存,跳转到一个列表页面的响应时间缩短了 13%,使用 XC10 缩短了 35%(参见图 6)。使用高级缓存,显示维基内容的响应时间缩短了 20%,而使用 XC10 缩短了 78%(参见图 7)。在使用 XC10 显示维基内容时响应时间的明显改进得益于数据网格的大容量。当使用默认 dynacache 实现时,由于缓存大小受到 JVM 堆限制,会丢弃许多缓存。

图 6. 转到一个列表页面的稳定状态响应时间对比(越低越好)
图 6. 转到一个列表页面的稳定状态响应时间对比(越低越好)
图 7. 显示维基内容时的稳定状态响应时间对比(越低越好)
图 7. 显示维基内容时的稳定状态响应时间对比(越低越好)

此外,当使用 XC10 时,我们观察到活动数据库连接数减少了 35%。这在预料之中,因为更多的内容是从 XC10 缓存提供的,而不是从 Web Content Manager 数据库获取的。我们还看到在卸载缓存时,垃圾收集负载得到了显著改进。卸载的缓存与默认缓存配置相比,用户执行垃圾收集的时间减少达 71%。这可能归因于当卸载缓存内容时,在应用服务器堆中创建和销毁的对象更少。

冷启动

对于冷启动场景,我们仅测试了本地高级缓存和卸载的高级缓存。这是因为一个未启用缓存的服务器的执行性能在热启动之前和之后大体相同,因为没有要热启动的缓存。此测试的目的是演示预先填充共享缓存并将其提供给新启动的应用服务器的价值。这避免了初始预热阶段,在该期间,新启动的服务器将拥有糟糕的响应时间,并在检索内容以填充其缓存时触发针对后端内容源的繁重负载。将缓存资额卸载到一个数据网格,可在任何应用服务器重新启动或者甚至整个应用服务器集群重新启动时独立维护缓存。这意味着要关闭一个服务器以进行维护或添加一个新服务器来处理负载峰值,不再需要在启动后小心地预热服务器的缓存,然后再将其上线以用于生产用途。

与稳定状态场景一样,我在测试冷启动性能时,我们观察到了吞吐量和响应时间的显著改善。吞吐量改进了 54%(参见图 8)。跳转到列表页面的响应时间减少了 26%(参见图 9),显示维基页面的响应时间减少了 49%(参见图 10)。

图 8. 冷启动吞吐量对比(越高越好)
图 8. 冷启动吞吐量对比(越高越好)
图 9. 转到一个列表页面的冷启动响应时间对比(越低越好)
图 9. 转到一个列表页面的冷启动响应时间对比(越低越好)
图 10. 显示维基内容的冷启动响应时间对比(越低越好)
图 10. 显示维基内容的冷启动响应时间对比(越低越好)

结束语

借助一些简单的配置更改和 WebSphere DataPower XC10 缓存设备的部署,我们能够显著改善 IBM Web Content Manager 和 WebSphere Portal 最终用户体验。我们在 XC10 中度量出最大缓存内容大小为 9 GB。这仅是两个 XC10 组成的集合所提供的 480 GB 可用容量的冰山一角,但比各个使用本地堆空间的应用服务器 JVM 能够缓存的内容要多得多。

尽管由于需要网络访问,各个缓存操作在本质上会稍微慢一点,但拥有更大的缓存带来了显著增加缓存命中率的能力,一个应用服务器上的缓存丢失会导致为下一个需要该项的应用服务器预先加载该缓存,这些收益远远超过了成本。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Lotus
ArticleID=834804
ArticleTitle=创新触手可及: 使用 WebSphere eXtreme Scale 增强 WebSphere Portal 和 IBM Web Content Manager 性能
publish-date=09132012