WebSphere 反向投资者: 用于加速应用程序部署的选项

期待用于加速 IBM® WebSphere® Application Server 中的应用程序部署的方法吗?在本部分中,WebSphere 反向投资者将介绍如何部署应用程序,并提供用于加速部署过程的选项。 本文来自于 IBM WebSphere Developer Technical Journal

Tom Alcott, IT 咨询专家, EMC

Tom Alcott 是 IBM 美国的一位 IT 咨询专家。自 1998 年 Worldwide WebSphere Technical Sales Support 小组成立以来,他就一直是该小组的成员。在此期间,他花费了大部分时间来编写用户手册。在开始研究 WebSphere 之前,他是 IBM 的 Transarc 实验室的一名系统工程师,负责支持 TXSeries。他有 20 多年从事基于大型机和分布式系统的应用程序设计与开发工作的背景。他撰写并发表了大量关于 WebSphere 运行时问题的文章。


developerWorks 专家作者

2009 年 5 月 26 日

在每篇专栏文章中,“WebSphere 反向投资者”将回答问题、提供指导和讨论与 WebSphere 产品相关的基础主题,经常会给出与流行的看法相悖的经过实践验证的建议。

送给您的礼物

又到假日了,这意味着每个人都在忙着完成当年的项目、购物,以及各种各样的传统年终任务。所有这些活动可能意味着您会欢迎任何节省时间的技巧,因为您可能有太多的事情需要处理,但是却只有太少的时间去全部完成。为了尽自己的一份力量帮助您提高效率,我将在本月的专栏中花些时间提供一些用于加速 IBM WebSphere Application Server 中的应用程序部署的技巧,这些技巧也适用于诸如 IBM WebSphere Portal、IBM Process Server 等产品以及其他基于 WebSphere Application Server 的产品。


应用程序部署流

在讨论一些有关如何提高应用程序部署效率的选项之前,最好了解一下应用程序部署过程中究竟发生了什么事情。该过程可以划分如下:

  1. 通过控制台或 wsadmin 从远程客户端连接到 WebSphere Application Server。
  2. 将应用程序 EAR 从远程客户端复制到管理节点(WebSphere Application Server“基本”版本的“WAS”应用程序服务器或 WebSphere Application Server Network Deployment 的部署管理器)上的临时目录。
  3. 以读/写模式打开 EAR。
  4. 收集部署器中的绑定。
  5. 保存临时 EAR。
  6. 将临时 EAR 上载到应用程序服务器节点。
  7. 在应用程序服务器节点上展开 EAR。
  8. 停止和启动应用程序服务器。

如果进一步观察应用程序部署流,您会注意到进行了两次复制操作。复制文件(尤其是通过网络)会非常耗时,因此首先要考虑消除或尽最大限度减少的就是复制操作的数量。这可以通过多种方法来实现:

  • 将 EAR 存储在管理节点的本地文件系统上,而不是存储在客户端节点的文件系统上。这样可以省去从浏览器客户端或 wsadmin 客户端所连接到的节点进行的文件复制(上述第 2 项)。
  • 将二进制分发到所有应用程序节点并使用 WebSphere Application Server earexpander 展开 EAR(还可以解压缩等等),然后使用带 –nodistributeApp 选项的 wadmin AdminApp 来部署应用程序,或者在执行安装时在管理控制台中取消选中 Distribute application 选项。这样做可以省去从管理节点到应用程序服务器节点的另一次应用程序复制(上述第 6 项),以及 EAR 展开操作(上述第 7 项)。

通过这样消除两次 EAR 文件复制以及 EAR 文件展开,您可能会注意到应用程序部署时间显著缩短,不过我只知道你们中有些人可能还希望进一步改进应用程序安装效率。在讨论支持并行应用程序部署的选项之前,我想介绍另外几个使用 wsadmin 时的时间节省技巧:

  • 使用 RMI 而不是 SOAP(缺省协议)来建立 wsadmin 连接。SOAP over HTTP 协议没有内置的请求/响应机制,因此在响应从服务器流回 wsadmin 客户端之前存在(很短的)延迟。另一方面,RMI/IIOP 协议则具有请求/响应机制,因此使用 RMI/IIOP 的等效请求要比运行于 SOAP/HTTP 之上的请求更快获得响应。
  • 与从文件中或从命令行运行多个 wsadmin –c 命令不同,应使用单个 wsadmin –f 命令,并将多个命令放在目标文件中。例如,不是使用:

    wsadmin -c "$AdminApp install c:\\myApps\\App1.ear {-appname myapp}"
    wsadmin -c "$AdminApp install c:\\myApps\\App1.ear {-appname yourapp)"

    而是创建一个名为 my.jacl 的文件(如果您喜欢的话,也可以是某个 jython 文件),其中包含以下命令:

    "$AdminApp install c:\\myApps\\App1.ear {-appname myapp}"
    "$AdminApp install c:\\myApps\\App1.ear {-appname yourapp)"

    并使用单个命令调用该文件:

    wsadmin –f my.jacl

这样会更快速,因为仅为该安装创建一个进程和 JVM API,并且该安装的 Java™ 类仅加载一次,而不是在每次直接或通过 –c 选项调用命令时加载一次。

除了用于 wsadmin 的时间节省技巧之外,还可以采用一些可转化为更快的部署时间的空间节省技巧:

  • 可以通过将很少更改的较大第三方 JAR 放在共享库中,从而缩小 EAR。如果不在 EAR 之间对共享库进行共享(您只是在减小每次更新时所部署的内容),则本文中讨论的有关 J2EE 打包和公共代码的风险就不是问题。如果要在 EAR 之间共享 JAR,您可能应该再三考虑,这篇文章同样对此进行了讨论。
  • 您还应该检查 EAR 中的任何不需要的 JAR——或者甚至更糟糕的是:不应该包括的 JAR,例如 jaas.jar、j2ee.jar 和 jsse.jar,因为 Java 和运行时已经提供了这些 JAR。

速度需求

也许您已经厌倦了上面的建议,但是仍然需要进一步加速应用程序部署。还有另一个选项涉及到编写使用 AppManagement Mbean 的 JMX 程序,它使您可以并行运行 JMX 程序的多个实例。

有关此方法的警告:正如在 WebSphere Application Server 信息中心指出的,所使用的 API 是异步的,即使安装尚未完成,它也会立即返回;因此,示例中有一个“睡眠”方法调用,它可能会对您通过并行运行多个程序实现的加速产生负面影响!!由于这最初是在打篮球的上下文中加以解释的,可以将其视为 Be quick, but don’t hurry 的另一个示例。


您的记忆力如何?

谈到通过脚本并行部署多个 EAR 文件或运行多个应用程序安装,务必记住每个 EAR 文件将在管理进程 JVM 堆中创建临时对象。结果是需要执行垃圾收集以便回收堆中的空间。因此,除非您喜欢诊断 Out Of Memory 错误,否则就需要跟踪同时运行的所有作业的 EAR(或 WAR)文件的总体大小,并确保该大小不会超过最大堆大小的 30-40%。

但愿您可以使用这里列出的某些或全部建议来加速 WebSphere Application Server 应用程序安装,从而应该使您能够将更多时间花在更迫切的事项上,例如假日购物。一如既往,您的成功就是对我的最好报答。


致谢

感谢 Alex Polozoff 和 Keys Botzum 提供的意见和建议。

参考资料

条评论

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
ArticleID=390678
ArticleTitle=WebSphere 反向投资者: 用于加速应用程序部署的选项
publish-date=05262009