本主题仅适用于 IBM Business Automation Workflow Advanced 配置。

针对 IBM Integration Designer 的性能调整

如果应用程序运行失败或者长时间循环而未完成,那么这些情况可能是由于系统内存不足所导致。

IBM® Integration Designer 可以在许多配置中使用。 本主题中的信息重点介绍了将 Integration Designer 用于测试环境和 Workflow Server。 虽然上下文是工具环境,但是调整解决方案也涉及使用其管理控制台来调整测试环境和 Workflow Server。 将 Integration DesignerIBM Workflow Center 配合使用以及选择性地与 IBM Business Monitor 配合使用时,这里描述的问题也有可能发生。

性能问题有两种典型的症状:
  • 出现内存不足异常,并且服务器进程停止。
  • 性能显著下降,因为过量使用物理内存并发生交换,或者垃圾回收花费过量时间。

确定堆大小问题

IBM Integration Designer 缓慢响应鼠标单击或击键操作时,您可以使用“堆状态”窗口小部件或生成 verbosegc.log 文件来查看 JVM 堆使用情况。

对 Java 堆大小问题的检查将会通过选择窗口 > 首选项 > 常规 > 显示堆状态来开启 Integration Designer 中的“堆状态”窗口小部件。 通过此窗口小部件,可以查看正在使用的堆大小并触发垃圾回收。

verbosegc.log 还有助于分析内存使用情况。 要为 Integration Designer 生成 verbosegc.log 文件:
  1. Integration Designer 安装目录中,使用文本编辑器打开 eclipse.ini 文件。
  2. 添加以下行:
    -verbosegc -Xverbosegclog:location for the generated gclog file
    如果不指定确切位置,那么将在安装目录中创建该文件。
  3. 要分析 verbosegc.log 文件,请从以下 URL 下载 IBM Pattern Modeling and Analysis Tool for Java Garbage Collector (PMAT):http://www.alphaworks.ibm.com/tech/pmat
  4. 要运行 PMAT,请在命令提示符中输入以下命令:
    java -Xmx500m -jar ga39.jar 
    .
JVM 参数(如 -Xmx)位于 IID_HOME 目录中的 eclipse.ini 文件中。

分析系统内存使用

当增大堆大小时,可用于进程其余部分的内存会减少。 剩余的系统内存由本机代码、JVM 装入类、JVM 自身等对象使用。 要分析系统内存使用率,请使用相应的系统内存工具(例如,用于 Linux 或 Unix 系统的 vmstat,用于 Windows 的“性能监控器”或“任务管理器”)。

处理交换产生的问题

如果您发现由于发生交换而使性能严重下降,请尝试以下解决方案:
  • 确保有足够的物理内存来支持 Business Automation Workflow 和所有其他正在运行的进程。 使用系统内存工具可做到这一点。 请注意,一些 32 位操作系统只能使用一定量的物理内存(例如,对于 Windows 为 3 GB)。
  • 停止所有不需要的进程(例如,浏览器、工具、办公应用程序)。
  • 使用远程 DB2 系统,并且停止本地系统上的 DB2 进程。
  • 对于编写,使用远程测试环境或 Process Center。

处理与垃圾回收相关的问题

此类问题可以通过以下两种症状中的任何一种来指示:
  • 由于频繁的垃圾回收活动而随即出现内存不足异常,从而导致 Java 堆中的可用空间极小。
  • 在没有发生交换的情况下性能严重下降,但是系统花费过量时间进行垃圾回收。

您可以通过增大 Java 堆大小 (-Xmx) 或调整 JVM 堆来处理这些症状。 Java 堆必须足够大以包含所有必需的 Java 对象。 但是,在 32 位系统上,请确保其大小不会致使本机内存量成为瓶颈。 您需要试验以确定这些限制。

有关调整 JVM 堆的信息,请参阅 WebSphere® Application Server 文档中的调整 IBM Java 虚拟机。此处汇总了关键调整点。 下面引用的参数适用于 IBM JVM。
  1. 生成 verbosegc.log 文件。
  2. 调整 Java 堆大小参数。
  3. 试验不同的垃圾回收策略。 可通过使用 -Xgcpolicy JVM 选项来设置这些策略。 存在两个选项:optthruput 和 gencon。 根据特定场景,gcpolicy 选项可能会影响所用的内存量。 如果使用 gencon 垃圾回收策略,请调整 nursery 大小参数(-Xmnsize、-Xmnsinitial size 和 -Xmnxmaximum size)。 这些参数位于 IID_HOME 目录中的 eclipse.ini 文件中。

更改堆大小设置

有时在 IBM Integration Designer 中进行发布需要较长时间,有时服务器会突然停止。 如果发生该情况,请检查服务器日志以查找内存不足错误。 缺省情况下,Integration Designer 测试环境配置为用于单元测试,并且它可能由于大量工作负载而耗尽内存。 要解决此问题,请增大堆大小。
  1. 在管理控制台的左侧面板中,选择服务器 > 服务器类型 > WebSphere Application Server
  2. 选择需要更多内存的服务器。
  3. 在“Java 和进程管理”下,选择进程定义
  4. 在“其他属性”部分中,选择 Java 虚拟机
  5. 存在两个与堆大小相关的字段:初始堆大小和最大堆大小。 缺省情况下,如果未指定初始堆大小,那么初始堆大小为 256 KB。 对于 32 位系统,Java 虚拟机 (JVM) 堆大小限制为 1.5 GB(在 Microsoft Windows 上)和 2.5 GB(在 AIX 上)。

对于最佳堆大小没有明确规则,因为所需大小取决于服务器上部署的模块的数量和大小以及服务器用作开发服务器还是生产服务器。 但是,此处提供一种已被部分管理员采纳的方法。 将最大值增大至足够大的级别,以使服务器不会耗尽内存并会收集 verbosegc 数据。 verbosegc 数据显示堆中的典型或最大实时数据量。 设置最大堆大小,以使服务器在稳定状态期间保留大约 50% 的空闲空间。 例如,如果 verbosegc 数据表明通常情况下存在大约 500MB 的数据,请将最大堆大小设置为 1024MB。

您可能无法使用最大设置,因为该设置可能会导致您在达到 JVM 限制之前耗尽系统上的内存。 如果症状属于内存不足异常,并且在出现内存不足异常之前没有进行垃圾回收,那么会发生该情况。 在此情况下,问题在于已耗尽资源(如线程、套接字、文件句柄、JIT 编译代码)的本机内存。 在此情况下,请减小最大 Java 堆大小 (-Xmx) 以在 JVM 地址空间中为本机内存腾出更多空间。 此问题通常只会出现在 32 位操作系统上。

Integration Designer 中处理 Java 文件

此建议可处理需要将非常多的 Java 文件导入到 Integration Designer 中的情况。 在该情况下,大量 Java 文件可能会导致产生性能问题。 首次将 Java 文件导入到工作空间中时,将由 Integration Designer 执行以下四个主要任务:
  1. 将 Java 文件导入到工作空间中。
  2. 编译 Java 文件。
  3. 建立 JDT 索引以针对验证和搜索目的从 Java 文件收集基本信息。
  4. 建立 Integration Designer 索引和执行验证以识别使用业务对象 API 来更好地进行验证和重构的 Java 源。
如果在流程中有几百或几千个 Java 文件,那么这四个步骤在构建过程中可能需要大量时间。

此处提供一个可用于在此情况下改善性能的步骤。 将 Java 类捆绑到 Java 归档 (JAR) 文件中并引用 JAR 文件而不是个别 Java 文件。 通过将所有 Java 源文件编译成 JAR 文件,可以节省 Java 编译时间(实际上,这一点意义非常重大),同时还节省建立 Java 索引和验证所用的时间。 要支持源级别调试,请将 Java 源文件与 Java 类一起捆绑到同一 JAR 中。

仅当 Java 代码不可能发生更改或者将很少发生更改时,才应使用此方法。 要创建 JAR 文件,请导入这些类,然后使用 JAR 导出向导。

请参阅相关链接中的“将二进制 JAR 文件用于 Integration Developer 和 Process Server”以获取有关此主题的更多信息。