IBM Business Process Manager 故障排除

如果没有正确的工具和技术,排除 BPM 问题可能很复杂。本文将介绍 IBM® BPM SWAT and Support 团队建议的一组工具和技术,它们可帮助您确认 IBM Business Process Manager 问题。 本文来自于 IBM Business Process Management Journal 中文版

Allen Chan, STSM、BPM SWAT 技术主管兼首席架构师, IBM

Allen Chan 是 IBM 的资深技术研究人员,目前是 BPM SWAT 技术主管和 BPM 安装、配置和迁移首席架构师。在 BPM SWAT 技术主管职位上,他领导着一个专家团队,帮助确保客户在关键的 BPM 部署和推广场景中取得成功。在担任目前职位之前,他曾是 BPM 应用程序生命周期、ESB 和集成,以及 BPM 工具的架构师。



Timothy Brantner, 经理,BPM、BPM Cloud、WebSphere Process Server 和 Blueworks Live 技术支持, IBM

Tim Brantner 是 BPM、BPM Cloud、WebSphere Process Server 和 Blueworks Live 的技术支持经理。在当前职位上,Tim 领导并协调一个全球团队,为 BPM 客户提供最佳的支持。在担任目前职位之前,他曾致力于实施客户计划(技能传授培训、beta 计划、早期设计计划和客户加速计划)及客户支持。Tim 最初来自德克萨斯州奥斯汀,他于 2001 年离开 .com 领域的创业开发,加入位于北卡罗来纳州罗利的 IBM;目前他仍然居住在那里。



Jing You, 咨询软件工程师, IBM

Jing You 在软件开发和行业解决方案方面拥有 10 多年经验。他目前是 WebSphere BPM Runtime Development 团队的咨询软件工程师,在该团队中从事 SCA 和 Web 服务绑定的开发和支持。他还参与了与 BPM 相关的客户支持工作。在担任目前职位之前,他曾是 IBM 的银行业解决方案实验室的架构师,领导中国第一个 Virtual Teller Machine (VTM) 项目的设计和实施。



Sun Guang Da, 资深软件工程师,WebSphere Process Server 和 BPM Level 3 Support, IBM

Da Guang Sun 是 BPM Level 3 Support 团队的一位资深软件工程师,目前负责为 WebSphere Process Server 和 BPM 产品中与 SCA、业务对象、绑定和 Web 服务相关的问题提供 3 级支持。



Dave Spriet, 软件开发人员, IBM

Dave Spriet 是 IBM 多伦多软件实验室的一名软件开发人员。他为 WebSphere Message Broker 开发工具,专注于面向对象的技术、XML、XML 模式和 UML 建模。他拥有 McMaster University 的计算机科学与统计学士学位(荣誉学位)。


developerWorks 投稿作者

2014 年 1 月 13 日

简介

IBM Business Process Manager 支持强大、高性能的业务流程管理,同时还提供了一种简单方式来建模业务流程。它基于 Java™ 技术和一个 WebSphere® Application Server 基础架构。本文介绍一组工具和技术,它们可帮助您确认 IBM BPM 生产问题。


处理敏感数据

在大多数情况下,“记录、跟踪、监视、探测” 涉及到将信息捕获到一个文件中,让主题专家 (SME) 进行分析。收集来的一些数据是敏感数据,您可能不希望向您组织以外的地方公布它们。下表列出了不同的敏感性级别和如何消除它们的敏感性:

表 1. 敏感数据类型
信息 如何消除敏感性
网络/基础架构数据 - 此信息包含主机名、端口、IP 地址等。 可以将敏感的基础架构信息替换为别名。但是,为不同的主机、端口等使用不同的别名很重要。
流程数据 – 此信息与业务流程的定义和结构相关,比如任务名称、业务流程定义 (BPD) 名称和服务名称。但是,它不包含业务数据。 可将敏感的基础架构信息替换为别名。但是,为不同的流程结构使用不同的别名很重要。
业务数据 – 此信息反映了业务载荷。可能需要此信息来帮助排除问题。 可将敏感的基础架构信息替换为虚假信息。但是,有时保留数据格式或特征很重要。例如,您可将业务数据替换为一条具有类似结构,但包含示例数据的 XML 消息。

在后续章节中,我们会向您介绍可能需要考虑流程或业务数据敏感性的区域。


排除检查列表文档的问题

为了排除故障,提前拥有良好的问题描述很重要。您在问题描述上花费的精力越多,问题就能得到越快地解决。例如,考虑用户正在做什么、准确的时间戳、错误代码等。

一个故障排除最佳实践是,让一个系统记录或备案对各个环境所做的所有更改(比如安装修复程序)。该操作能为排除问题提供最佳的洞察。准备与 IBM 共享此信息。

IBM Business Process Manager 信息中心拥有有关故障排除和支持的丰富信息。


系统数据监视和收集

如果您的 BPM 系统出现问题,那么您首先应该检查系统状态,消除操作系统、JVM 或数据库的任何潜在问题。本节将介绍在系统级别上应该检查哪些内容,如何收集系统数据,还会介绍一些监视工具。

BPM 和数据库监视

作为问题确认的基础,Java™ 虚拟机 (JVM) 和系统健康状况通常至关重要,尤其对于性能调优问题。以下示例展示了您应该监视的一些场景:

  • JVM 堆达到最大值的 70% 并在此状态停留超过 5 分钟。此场景通常表明即将出现内存不足错误。
  • CPU 利用率保持在 90% 以上 5 分钟。
  • 硬盘容量达到 70% 或任何不可接受的值。
  • 硬盘空间容量在不到 5 分钟内增加了 20%。硬盘空间的快速消耗通常表明正在发生一个生成大量日志条目和消耗大量磁盘空间的问题。
  • 垃圾收集频繁发生而内存释放不太成功。此场景通常表明对内存的需求多于可用内存,这会为可能的内存不足错误创造条件。

您应监视 BPM 服务器和数据库的以下信息:

  • BPM:
    • JVM:堆大小、垃圾收集、线程使用、连接池使用
    • 系统:CPU 使用、磁盘空间、I/O、临时空间、内存使用
  • 数据库:CPU 使用、磁盘空间、I/O、缓存大小

您可使用以下工具监视和分析系统健康状况:

表 2. 系统健康监视工具
系统/JVM 信息监视/分析工具
磁盘空间、CPU 负载、磁盘 I/O 等操作系统工具
Nmon
Java 核心文件IBM Whole-system Analysis of Idle Time 工具(WAIT 工具
Java 堆实时信息JConsole JVM 工具
Java 线程转储IBM Support Assistant
IBM Thread and Monitor Dump Analyzer for Java
Java 堆转储IBM Heap Analyzer
垃圾收集、JDBC 线程、Web 线程、servlet 线程等WebSphere Application Server Performance Monitoring Infrastructure (PMI)

在以下各节中,我们将介绍其中一些工具,以及不同类型的系统数据的数据收集方法,其中包括:

  • IBM WAIT 工具
  • JConsole JVM 工具
  • Java 线程转储
  • IBM Heap Analyzer 数据解释
  • 磁盘空间
  • 垃圾收集数据准备
  • 日志和跟踪
  • 跨组件跟踪
  • IBM Support Assistant

IBM WAIT 工具

IBM WAIT 工具可帮助您查明一个中央 Java 组件的工作负载中的性能瓶颈。WAIT 将会分析容易收集的运行时数据,生成一个描述主要瓶颈的 HTML 报告。WAIT 从一个正在运行的基于 IBM 或 Sun® 的 JVM 接受一个或多个 javacore 文件作为输入。它提供了脚本来简化数据的收集。

WAIT 的设计无需安装;它不需要监视代理,而且生成的报告是一个交互式网页。您不需要重新启动应用服务器,数据收集开销应该极小。

您可以在 http://wait.ibm.com 上访问该工具。

图 1. IBM WAIT 工具
IBM WAIT 工具

点击查看大图

图 1. IBM WAIT 工具

IBM WAIT 工具

JConsole JVM 工具

JConsole 是一个符合 JMX 的监视工具。它使用了 JVM 的丰富的 JMX 仪表,提供在 Java 平台上运行的应用程序的性能和资源消耗的信息。

因为 JConsole 随附了现代 JVM,所以它是监视 JVM 的内存使用、线程细节和类信息的最直接方式。通过监视此信息,您可观察是否存在任何内存泄漏或任何处于无响应的死锁状态的线程。

jconsole 可执行文件位于 JDK_HOME/bin 中,其中 JDK_HOME 是安装 JDK 的目录。如果此目录位于您的系统路径上,那么您可以在命令 (shell) 提示符中键入 jconsole 来启动该工具。否则,您需要键入该可执行文件的完整路径。

图 2. JConsole JVM 工具
JConsole JVM 工具

点击查看大图

图 2. JConsole JVM 工具

JConsole JVM 工具

Java 线程转储

线程转储为您提供 JVM 中的线程在特定时刻正在处理的操作的时间点快照。例如,您可以 30 秒为间隔创建 5 个线程转储,以便不断看到发生了什么,以及线程是否阻塞。

要生成一个线程转储,可执行以下操作:

获取线程转储文件后,您可使用以下工具分析它:

JVM Heap Analyzer 数据解释

Java 堆区域定义对象、数组和类。Java 对转储是 Java 堆在特定时刻的快照。通过分析 JVM 堆大小的趋势,可轻松找到潜在的内存泄漏。

图 3 显示在一些请求传入后,JVM 堆大小显著增加。这意味着您需要更多地关注请求处理。您还需要在堆上创建一个快照,然后执行分析,查看哪些对象耗尽了堆空间。

图 3. JVM 堆大小图
JVM 堆大小图

点击查看大图

图 3. JVM 堆大小图

JVM 堆大小图

IBM HeapAnalyzer 通过使用一个启发式搜索引擎和分析 Java 应用程序中的 Java 堆转储,帮助您找到可能的 Java 堆泄漏区域。HeapAnalyzer 分析 Java 堆转储的方式是,解析转储,创建定向图,将它们转换为定向数,然后执行启发式搜索引擎。

有关的更多信息,请参阅 使用 HeapAnalyzer 诊断 Java 堆问题

垃圾收集数据准备

垃圾收集可能对应用程序性能产生重大影响。建议您一起监视垃圾收集 (GC) 信息和 JVM 堆大小。

您可以清楚地看到您分配的内存是否通过 GC 释放到了内存池中 (图 4)。在堆请求不是太大,但内存使用量不断增长时,您可能需要检查 GC 算法。

图 4. JVM 堆请求
JVM 堆请求

GC 和 Memory Visualizer 是 IBM 的一个新的工具套件的一部分,这个套件分析了详细的 GC 日志,帮助提供内存管理问题的这类洞察。

日志和跟踪

在某些情况下,您可能需要收集特定服务器组件的信息。IBM BPM 基于 WebSphere Application Server,后者启用了日志和跟踪功能来帮助诊断问题。您可以打开不同的日志级别和跟踪设置来收集更多的执行数据,这些数据可帮助您识别问题或缩小问题的范围(可能包含业务数据)。查阅以下文档来收集日志和跟踪信息。

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

Cross-Component Trace

Cross-Component Trace (XCT)(仅可用于 IBM BPM Advanced 中)使用 WebSphere Integration Developer 将 SystemOut.log 和 trace.log 记录映射回 SCA 编程模型。

图 5. 启用 Cross-Component Trace
启用 Cross-Component Trace

您可以使用以下方法启用 Cross-Component Trace:

  • 在服务器运行时,使用运行时跟踪,这会立即生效。
  • 使用一个 Configuration 跟踪来持久追踪服务器重新启动之后的情形。在您希望确定消息如何在不同 SCA 组件之间传递时,此方法很有用,这样您可以更好地识别哪个组件导致出现问题。

IBM Support Assistant 4.1

IBM Support Assistant 是一个免费的软件产品,它为您提供了一个工作台来帮助确认问题。Support Assistant 专注于快速找到关键信息,自动化重复性步骤,并为您配备各种可服务性工具,使您能够执行自主分析和诊断问题,更快地解决问题。它还支持访问多个不同的可服务性工具,这些工具可在许多问题诊断区域为您提供帮助,包括 Java 故障排除、产品配置分析、日志分析等。

您可以在 此处 下载 IBM Support Assistant。

图 6. IBM Support Assistant
IBM Support Assistant

业务流程数据监视

如果您已经在系统级别完成问题确认,但仍然在 BPM 系统上遇到问题,建议您将关注点放在业务流程上。流程问题可能由业务流程设计或流程引擎对业务流程的执行导致。本节将介绍各种 IBM BPM 版本中包含的一些重要的监视工具。您应该能够在相应的 BPM 环境中使用这些开箱即用的工具。

Process Monitor 和 Instrumentation Monitor

在某些情况下,从业务角度讲,您真正关心的可能是某个流程的性能。在这些情况下,您需要通过指标来告诉您 BPM 引擎内的性能,包括:

  • 一个流程的一个步骤花了多长时间
  • 哪个流程最复杂
  • 为一个流程创建了多少个流程实例

BPM 提供了一个 Process Monitor 和一个 Instrumentation Monitor 来监视流程的性能。Process Monitor 可用于识别当前正在运行的流程和服务实例。它使您能够停止消耗大量资源或由于流程建模错误而进入无限循环的任务。Instrumentation Monitor 收集并显示详细的仪表数据。

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

Process Monitor

要访问 Process Monitor,需要登录到 Process Admin Console (http://<server_ip>:<server_port>/ProcessAdmin) 并选择 Monitoring => Process Monitor。图 7 显示了 Process Monitor 的 Summary 页面:

图 7. Process Monitor Summary 页面
Process Monitor Summary 页面

Process Monitor 包含以下页面:

  • Summary – 显示有多少活动的服务和流程目前正在消耗 CPU 资源。它还显示哪些流程和服务需要最多的总耗时、实例总数和执行它们所需的步骤总数。
  • Processes – 显示系统中所有流程的数据。
  • Services – 显示系统中所有服务的数据。

图 8 显示了 Process Monitor 的 Services 页面。

图 8. Process Monitor Services 页面
Process Monitor Services 页面

点击查看大图

图 8. Process Monitor Services 页面

Process Monitor Services 页面

Instrumentation Monitor

本节将介绍如何实现显示并收集仪表数据。Instrumentation Monitor 对识别 BPMN 流程实例性能瓶颈和捕获仪表数据很有用。

登录到 Process Admin Console 并选择 Monitoring => Instrumentation Monitor。当前的仪表数据如 图 9 中所示。

图 9. Instrumentation Monitor
Instrumentation Monitor

点击查看大图

图 9. Instrumentation Monitor

Instrumentation Monitor

如果希望重设仪表数据以显示最新的数据,可单击 Refresh。如果希望按设定的间隔自动重设仪表,那么可以从 Automatically refresh every 列表中选择一个时间单位。

要启动对仪表数据的记录,可单击 Start Logging。仪表数据保存为 DAT 格式,该文件放在 \logs 文件夹中。在开始记录后,仪表日志目录的准确路径可在 Instrumentation Monitor 页面上看到。例如:<BPM_HOME>\AppServer\profiles\StandAloneProfile\.\logs\inst001.dat。

通过检查 Instrumentation Monitor,您能够看到 EJB API、缓存和数据库查询等系统功能所花的时间是否比平常更长。

仪表日志文件显示了在 Process Server 上发出的每个命令和每个命令运行所花费的时间。您应该结合使用线程转储和日志文件来执行此分析。

图 10. 仪表日志文件
仪表日志文件

有关的更多信息,请参阅 读取和解码 Teamworks、WebSphere Lombardi Edition (WLE) 和 IBM Business Process Manager (BPM) 产品的仪表文件

Process Inspector (BPMN)

如果您的流程系统基于 BPMN,那么 Process Inspector 将会提供有关整个系统中的事件和流程的信息,包括一般元数据、当前活动、计时器、消息事件、孤立令牌和任务状态等信息。除了查看有关流程实例的详细的活动信息之外,还可采用交互方式执行某些故障排除和维护任务。例如,在 Process Inspector 显示界面上,您可以删除某个流程实例或重新启动一组失败的流程实例。

有两种类型的 Process Inspector 接口:一个来自 Process Admin Console 的 Web UI 和一个与 Process Designer 集成的 UI。

从 Web UI,您可以查看正在运行的流程实例的详细信息。Web UI 还显示了失败的实例的信息和细节,允许您暂停运行的实例,以帮助缩小问题范围。图 11 显示了基于 Web 的 Process Inspector。

图 11. 基于 Web 的 Process Inspector
基于 Web 的 Process Inspector

点击查看大图

图 11. 基于 Web 的 Process Inspector

基于 Web 的 Process Inspector

BPM 在 Process Designer 中提供了集成的 Process Inspector。使用集成的 Process Inspector,您可以在 Process Designer 中调试流程。选择 Process Designer 视图上的 Inspector 选项卡时,它会切换到 Process Inspector。单击 Start 启动一个流程并在 Process Designer 中模拟它,监视该流程的状态。如果在该流程上获得一个错误,您可以轻松地识别该错误和它的位置。图 12 显示了一个集成的 Process Inspector:

图 12. 集成的 Process Inspector
集成的 Process Inspector

点击查看大图

图 12. 集成的 Process Inspector

集成的 Process Inspector

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

BPM Advanced 上的 Business Process Choreographer Explorer (BPEL)

如果使用 BPEL(仅可用于 IBM BPM Advanced 中),您可以使用开箱即用的、可自定义的 Business Process Choreographer (BPC) Explorer 来监视 BPEL 流程。BPEL Explorer 为这些基于 BPEL 的流程提供了丰富的功能,其中包括:

  • 流程和人工任务的默认视图(模板、正在运行的实例、洞察视图和可视化)
  • 创建自定义视图来跟踪和监视特定实例的能力
  • 生命周期管理
  • 审核和更改流程和任务状态的能力
  • 通过修改状态和运行时变量来修复实例的能力
  • 其他功能,比如迁移到新版本和更改所有权

您可在以下地址上访问 BPC Explorer:http://<server_ip>:<server_port>/bpc.

图 13. Business Process Choreographer BPEL Explorer
Business Process Choreographer BPEL Explorer

Event Manager Monitor

Event Manager Monitor 显示成功调度、启动和正在 Event Manager 中运行的任务和活动。它显示了队列中的、正在运行的或暂停的流程。

要访问 Event Manager Monitor,可登录到 Process Admin Console 并选择 Event Manager => Monitoring

图 14. Event Manager Monitor
Event Manager Monitor

备注:在启用 Event Manager 来收集或监视事件数据时,收集的数据可能包含流程数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

失败事件管理

失败事件通过 BPM Advanced 管理控制台中的 Failed Event Manager 应用程序管理。它监视和记录以下场景的失败事件:

  • 因为异步 SCA/JMS/MQ 调用而导致的运行时故障
  • 长期运行的 BPEL 流程故障(停止的活动、失败和终止的流程实例)
  • Business Flow Manager (BFM) 基础架构故障(持有的队列消息表示为失败的事件)
图 15. Failed Event Manager
Failed Event Manager

Failed Event Manager 的功能包括:

  • 失败事件的管理(SCA、JMS 或 BPC 相关)
  • 搜索(所有内容或按条件搜索,比如按照日期、组件、来源或目标等进行搜索)
  • 查看失败的事件(载荷、业务数据和根源排除)
  • 访问相关组件(比如 BPC Explorer 重定向)
  • 修改事件(例如,如果不正确的载荷内容或格式是问题根源)
  • 删除或重新提交失败事件消息

备注:

  1. 可针对重新提交而按需启用跟踪,以进一步分析相关问题。
  2. 失败的事件可能包含流程数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

性能和故障排除工具

如果遇到 BPM 的性能问题,确定问题根源可能非常具有挑战性,因为 BPM 生产环境拥有许多具有不同拓扑结构的组件。

例如,在更小的组织中,所有 BPM 组件可能安装在一个机器上,但在不断发展的大型组织中,如果基于 BPM 的系统是组织的核心系统,要实现高可用性和高吞吐量,拓扑结构可能很复杂。通常,黄金级的拓扑结构包含至少两个负载平衡器服务器、两个 BPM 服务器和两个数据库服务器,以及在它们之上创建的应用程序集群。如果一个复杂的 BPM 拓扑结构具有性能问题,那么您可能需要检查网络环境和软件环境。

您可能需要考虑的一些方面包括:数据库空间是否增长和耗尽,您自定义的应用程序中是否存在内存泄漏,网络是否中断,以及浏览器在执行大型 Javascript 问题时是否遇到了性能问题。

本节将介绍您可能需要用来诊断性能问题的一些工具和实践。

WebSphere Performance Monitoring Infrastructure

WebSphere Performance Monitoring Infrastructure 提供了可扩展的基础架构层来帮助应用程序收集或查看性能数据。Tivoli® Performance Viewer (TPV) 包含在 BPM 中。您可以在管理控制台中的 Monitor and Tuning 选项卡上找到它。如果您安装了 WebSphere Performance Monitoring Infrastructure 功能,那么您可以使用该功能监视服务器性能。

图 16. Tivoli Performance Viewer
Tivoli Performance Viewer

Java 转储和核心

在某些性能情况下,您可能需要生成您服务器的 Java 转储和核心。登录到管理控制台并选择 Troubleshooting,以转到 Java 转储和核心页面。在此页面中,您可以生成特定服务器的堆转储、Java 核心和系统转储。在诊断性能或内存问题时需要此数据。

有关如何分析此数据的信息,请参阅 内存不足问题 一节。

图 17. Java 转储和核心
Java 转储和核心

数据库跟踪

特定于数据库产品的跟踪,比如 Oracle® 数据库的 AWR 报告,可帮助您识别最常执行的查询,并确定最昂贵的查询所花费的时间。

图 18. 数据库跟踪
数据库跟踪

点击查看大图

图 18. 数据库跟踪

数据库跟踪

您可以按照 收集 IBM Business Process Manager (BPM) 的数据库问题的故障排除数据 中的说明,在 IBM Business Process Manager 存储库中打开数据库跟踪。

备注:收集的数据可能包含流程数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。

安全跟踪

一般而言,IBM Business Process Manager 产品使用了 WebSphere Application Server 中的安全性功能。有关的更多信息,请参阅:

这些功能适用于 BPM 服务器中的大多数安全性相关问题,尤其是 BPM Advanced 组件。您还可以使用 IBM Business Process Manager 进行安全跟踪:WLE.wle_security=*

浏览器跟踪

Firefox® Firebug® 和 Internet Explorer® Developer Tool 等工具,以及 HTTPWatch® 和 Fiddler 等独立于浏览器的工具,可帮助您检查浏览器 HTTP 请求和相应的响应时间。它们还可帮助排除 HTTP 请求/响应问题,比如门户和基于 Coach 的问题,尤其在它们与预期的性能、缺少的 Web 资源或 Coach 视图的自定义 JavaScript 问题相关的时候。

图 19. 浏览器跟踪
浏览器跟踪

点击查看大图

图 19. 浏览器跟踪

浏览器跟踪

网络跟踪

网络延迟是 Process Designer 与 Process Center 之间缓慢的响应时间的主要原因之一。关于网络问题,存在许多工具和详细信息,它们不属于本文的介绍范畴。以下一些工具可用于诊断某些情况下的网络问题:

  • 使用 Fiddler 诊断网络延迟问题,模拟网络延迟并观察行为。
  • 使用 Wireshark 帮助分析网络流量。
  • 使用 tracert(用于 Windows)或 Traceroute(用于基于 UNIX 的操作系统)理解包网络路径和两台机器之间的网络跃点。
  • 使用 ping 确保最优的网络连接性并以毫秒为单位来度量延迟。
  • 使用 telnet 确保能够访问远程机器上的特定端口。

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。


Web 服务问题

如果您怀疑 Web 服务存在问题,那么可以打开相应的 Web 服务跟踪功能。有关的更多信息,请参阅 收集 IBM Business Process Manager 中的 Web 服务问题的故障排除数据

此外,您可以使用 SOAPUI 或 TCPMon 等工具验证 WSDL,设置一个虚假的 Web 服务端点或代理来捕获传入和传出的消息,确保它们与预期的值相匹配。请参阅 IBM BPM 信息中心中的 支持的 Web 服务标准

请注意,Web 服务基于 Web 和网络。所以在遇到 Web 服务连接异常时,首先应该检查的是网络状态。例如,您应检查您的 BPM 服务器是否提供了目标服务。如果使用了 HTTPs 协议,则应该验证 SSL 信息是否已正确导入您的服务器中。

IBM Integration Developer 提供了一个集成的、基于 Eclips 的 TCP/IP Monitor 工具,可帮助您监视发向服务器和来自服务器的请求和响应。要打开该工具,可以选择 Window => Show View => TCP/IP Monitor。(有关的更多信息,请参阅 WebSphere Application Server 信息中心中的 TCP/IP Monitor 视图

图 20. TCP/IP Monitor
TCP/IP Monitor

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。


内存不足问题

内存不足问题总是发生得很突然,事后的分析常常没有提供问题确认所需的所有场景信息。内存不足问题有许多可能原因,包括:

  • 使用和上传大型文档
  • 在非常短的时间内创建大量实例和任务
  • 检索外部数据以填充一个非常大的业务对象,比如一个对象拥有:
    • 100 多个成员字段
    • 无限递归的复杂子成员。

如果怀疑内存不足问题是由一个特定流程实例的执行所导致的,那么可以执行以下过程来帮助缩小问题范围。

  1. 捕获内存不足问题所导致的 Java 核心和关联的堆转储,它们表明了发生故障时 JVM 的状态,以及可能促成该问题的对象。例如,它们可能显示导致或促成此故障的产品组件,或者甚至导致此故障的个别流程应用程序组件。
  2. 重新启动服务器后,进入 Web Process Inspector,检查所有实例,识别在发生内存不足问题之前更新的最后几个实例。这些实例是导致内存不足问题的最可能的因素。
  3. 将范围缩小到候选因素列表后,您需要检查流程设计,确定导致内存不足问题的最可能步骤。

图 21 显示了一个示例堆转储,该转储表明有一个 BPM 业务对象 (org/jdom/Element) 占用了 1.4 GB。

图 21. 堆转储分析内存不足示例
堆转储分析内存不足示例

点击查看大图

图 21. 堆转储分析内存不足示例

堆转储分析内存不足示例

以下是有关内存不足问题的更多信息的链接:


应用程序日志

在 Process App 或 SCA 应用程序中包含应用程序日志是一个不错的想法。

对于基于 SCA 的应用程序(在 IBM BPM Advanced 中的 IBM Integration Designer 中开发),您可以打开 Cross-Component Trace 并使用 IBM Integration Designer 分析 SCA 模块的执行路径。日志将记录:

  • 模块到模块的消息处理序列。
  • SCA 调用的进入和退出时间。

在发生性能问题时,此跟踪提供了有关您的模块上消耗了多少时间的许多有用信息,可帮助您确定最耗时的模块。

对于基于 BPMN 的应用程序(在 Process Designer 中开发),您可以打开流程仪表,查看哪些服务和流程花了最长时间来完成。

备注:收集的数据可能包含业务数据。请参阅 数据敏感性 了解为敏感业务数据消除敏感性的信息。


预防性措施

预防问题始终强过于修复问题。本节我们将讨论为了从一开始就预防潜在的问题发生而要遵循的一些建议措施。

维护一个干净的系统

定期维护可帮助我们将正常行为与异常行为更好地分开。这可帮助我们快速找到系统错误,帮助我们更快地确定异常区域或可能的原因。下表为持续的系统维护过程提供了一些建议,以及执行这些过程的建议频率。

表 3. 维护过程
频率过程
每天
  1. 验证所有错误队列是否是空的。
    1. 对于基于 SCA 的应用程序,检查 Failed Event Manager 中是否有任何失败的事件。
    2. 如果为 SCA 导入和导出时使用的连接组件定义了任何异常队列,也可检查这些队列。
    3. 对于基于 BPMN 的应用程序,可检查 Process Inspector 来查看是否有任何失败的实例。
  2. 检查服务器日志文件中是否有任何错误和异常。如果该错误无法消除,该日志文件将会解释它的原因。
  3. 监视内存和 CPU 峰值。
  4. 查找失败的实例并识别失败的根源。
  5. 检查 FFDC 日志文件。
  6. 监视实例和任务计数的平均增长。对于 BPMN 流程,对比 LSW_PRI_KEY 表中的值的变化。
每星期
  1. 检查产品维护修复程序。
  2. 针对在 BPM 日志文件中找到的任何问题或异常,检查产品技术说明。
  3. 检查数据库日志文件并按照数据库产品的建议维护健康的数据库。
  4. 审阅数据库性能报告(获取一个 4 小时的抽样)。
每月 运行定期流程数据清理,以删除旧的或已完成的信息。

记录您的环境

一个明确记录的系统环境会使得问题确认变得更简单,问题更容易诊断。出现问题时,IBM BPM Support 可能会查询文档来获取您系统的信息。建议您记录系统的以下信息:

  • 架构(机器、版本和应用的修复程序、应用程序、数据库、部署的应用程序、拓扑结构图、网络等)
    • 总结您环境应用的版本和修复程序的最佳方式是,为您的 BPM 安装生成一个 versionInfo 文件。versionInfo 脚本位于 <BPM_Install_Root>/bin 文件夹中。对于 Windows,该文件将是 versionInfo.ba,对于 Linux/Unix,该文件将是 versionInfo.sh。建议使用 -long 参数生成完整的信息。此参数显示了修复包和 ifix 的详细信息。
    • 要获取应用程序信息,可压缩整个 <Profile_Root>/config 文件夹,它包含您环境的所有配置和应用程序信息。
  • 描述今天的哪些差异可能导致问题的更改日志。

测试更新

测试对任何系统更改都是强制性的。在将更改应用到生产中之前,最好准备一个测试环境并全面测试更改:

  • 在生产前环境中测试任何配置更改、流程更改和流程迁移
  • 设置一个类似生产或与生产相当的环境来再现问题或执行回归测试。

调优性能

性能调优实际上是一项系统性工程。您必须考虑到整个系统,包括硬件、网络、软件和其他任何组件。以下是一些最佳实践:

  • 尽早开始。您应在开始设计系统时就考虑到性能。
  • 不要对性能相关数据进行假设,比如每小时的用户访问数、单个 BPM 节点的吞吐量,等等。从真实环境或现有项目中收集数据,以便可以基于真实数据来设计高性能解决方案。
  • 调优整个软件栈、操作系统、网络,尤其是数据库。
  • 计划一个特定于您的环境和应用程序的长期任务。一些因素可能不断变化:您的数据库空间可能装满,并发请求数可能增多,或者您的 JVM 堆大小可能不够您的应用程序使用。设定一个计划来频繁地监视系统性能,迅速调优它以实现高性能。

纵观全局

您的 BPM 系统在硬件、软件和网络上运行。不要仅关注软件,还要关注硬件和网络。否则,您可能错过明显的问题,并浪费时间和金钱。

不要仅监视产品相关日志文件、转储等,还需监视可能影响中间件产品的操作系统、数据库和网络行为。熟悉系统级度量指标和工具(CPU 利用率、硬盘分页和 I/O、数据库吞吐量、网络流量等)。

实现一个诊断收集计划

在将一个 BPM 系统发布到生产环境中之前,应该先准备一个诊断收集计划,列出您希望收集的内容和收集方式,这样做会很有帮助。这将帮助您:

  • 使您的团队能在系统遇到问题时能够快速反应
  • 记录并自动化诊断工件收集
  • 在数据收集、工具和分析方面为团队提供指导培训。

使用 BPM 监视工具

BPM 为您准备了有效的监视工具,不仅可在出现问题时使用它们,也可以每天使用它们来帮助您:

  • 识别运行时问题和性能瓶颈
  • 预测即将出现的问题并保持主动

备份您的数据

经常备份重要的数据和配置,能够预防在系统发生崩溃时丢失数据。您还应该在启动生产系统之前创建一个备份计划。我们建议您:

  • 创建定期和自订花的备份,或者在线或离线的维护窗口。
  • 在执行重要系统更新或修改之前备份您的数据。

结束语

本文介绍了在 BPM 问题确认的不同方面可用的工具和推荐方法,以及可帮助第一时间预防问题发生的措施和最佳实践。


致谢

感谢以下人员对本文的贡献内容和提供经验:Dawn Ahukanna、Susan Herrmann、Meng Wang、Richard Metzger、Sandhya Kapoor、Ming Gao、Todd Deen、Matt Luczkowiak、Ray Tseng、Bill Wentworth、Lawrence Louie、Dave Booz 和 Don Bourne。

参考资料

学习

获得产品和技术

讨论

条评论

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=960007
ArticleTitle=IBM Business Process Manager 故障排除
publish-date=01132014