长流程中的异步性发生在事务边界。每一个长流程都由多个全局事务 (Global Transaction) 组成。每一个事务中运行一个导航步骤 (Navigation Step),通常由一个或多个活动 (Activity) 组成。业务流程引擎 (Business Process Engine, BPE) 定义了一个内部 MDB 及其激活规范:BPEInternalActivationSpec 来监听 BPEIntQueue 队列(该队列应用于业务流程组件内部,在不同导航步骤间传递引导消息),并从中取回导航消息,启动下一个导航步骤。在图 28 所示的流程中,每个活动都被配置成一个单独的导航步骤,活动间借助 BPEIntQueue 队列进行导航。
对 BPEInternalActivationSpec 的调优需要遵循 JMS 激活规范调优准则,对最大并发端点数和最大批处理大小参数进行配置。在 WPS 服务器上只有一个 BPEInternalActivationSpec ,也就是说所有的业务流程组件共用一个激活规范,调优时需对此加以注意。
连接工厂 BPECFC 被用来将导航消息放置在 BPEIntQueue 队列。同前文中描述 配置 JMS 和 JMS 队列连接工厂 一样,在多并发环境下,需要对连接池的最大连接数进行配置,以保证并发的 BPE 事物得到足够的连接以访问底层消息队列。
基于工作管理器 (WorkManager) 导航的 BPE 组件调优
从 WPS V6.1 开始引入了一种新的导航模式——基于工作管理器的导航模式,用于替换原来的基于 JMS 消息的导航模式。一个工作管理器是一个 J2EE 的线程池。每一个 BPEL 的事务在一个 J2EE 线程中运行。通过使用工作管理器,BPE 不再采用 JMS 消息和队列,而是使用 WebSphere Application Server (WAS) 提供的异步 Bean 实现流程的扭转。
在 WPS V6.2 中,默认启动的还是基于 JMS 方式导航的业务流程引擎。可以通过启动高级性能优化配置页面来选择使用基于工作管理器的导航。 基于工作管理器的导航方式带来更加高效的性能,一般来说大概在 1.5 倍左右。
可以看到图 29 中的配置页面上有一些参数可以配置,
延期消息的最大生存期:实际上并不是指定启用高级性能优化就一定会采用工作管理器导航方式,在服务器发生负荷过载一定时间后,放在 BPEDB 中的导航信息将被发送给 BPEIntQueue ,并由基于 JMS 的导航方式继续运行下去。这个时间由延期消息的最大生存期参数决定。
延期消息的恢复时间间隔是指两次检查是否存在这种延期消息的间隔时间。
线程上的最大处理时间定义了某一个流程实例必须将一个工作管理器线程返还给线程池的时间。
还有两个跟性能相关的参数:消息池大小和事务间高速缓存。当生成的消息比使用的消息更多时,消息池将被用作缓冲区。消息是由工作管理器中的导航线程以及进入系统的 API 和 SCA 请求所生成的。而工作管理器中的导航线程将使用这些消息。如果消息池变满,那么会将后续产生的消息直接发送至 JMS 并使用 JMS 导航来处理。事务间高速缓存大小字段指定在各个事务中要保留在高速缓存中的数据库对象(例如 BPEL 变量和流程上下文)的数目。默认值为 BPENavigationWorkManager 的线程池大小。
BPENavigationWorkManager 线程池的大小决定了 BPC 导航中的并发能力。您可以通过管理控制台进行设置:资源 > Asynchronous beans > 工作管理器 > BPENavigationWorkManager
图 30. 配置 BPENavigationWorkManager 线程池
本章的内容比较简短,主要是对 J2C 连接工厂,数据源等后台资源相关配置的介绍。包括以下三个部分:
配置数据源预处理语句高速缓存大小 (Prepared Statement Cache Size)
资源适配器通过 J2C 连接工厂将应用程序连接到企业信息系统。J2C 连接工厂连接池中的连接是到后端资源的物理连接。实际上 JMS 连接工厂只是一种使用 SIB JMS 资源适配器的 J2C 连接工厂。所以使用 SIB JMS 资源适配器的 J2C 连接工厂的调优详见前文中 配置 JMS 和 JMS 队列连接工厂 部分。如果您使用其他的资源适配器,则需要配置 J2C 连接工厂连接池中包括最大连接数在内的一系列参数。
您可以选择从以下两种路径从管理控制台对 J2C 连接工厂相关的参数进行配置:
资源 > 资源适配器 > J2C 连接工厂 > J2C 连接工厂名称 > 连接池。
资源 > 资源适配器 > 资源适配器 > 资源适配器名称 > J2C 连接工厂 > J2C 连接工厂名称 > 连接池。
值得注意的是异步 SCA 调用的 SCA 模块 MDB 使用的资源适配器——平台消息组件服务提供器接口资源适配器。该资源适配器控制 SCA 模块的激活规范,从而影响整体的性能和异步通信路径上的处理。在部署 SCA 模块时,在 SIB SPI 资源适配器上不会显式地创建连接工厂,而是由 SCA 运行时使用底层 SIB 核心 API 通过程序进行创建。所以这些连接工厂的属性,例如连接池的设置,都是不可见的,并且管理员也无法为调优对其进行修改。如图 27 所示,在该资源适配器管理页面上无法找到 J2C 连接工厂属性。
每次应用程序试图去访问后台数据库时,它需要资源来创建,维护和释放到这个数据源的连接。为节约资源和加快访问速度,每一个数据源都拥有自己的连接池。该连接池的最大连接数属性应该足够大,以保证所有线程对数据库的并发访问。数据源连接池的调优与前文中 JMS 连接工厂连接池的调优类似,请如本文前面讨论的那样设置每一个数据源的最大连接数属性,以保证在并发环境中与其他系统资源相匹配。
打开管理控制台,找到 资源 > JDBC > 数据源 > 数据源名,数据源连接池的最大容量是由最大连接数控制的,您可以通过进入数据源面板的 其他属性 → 连接池属性 来设置。
在 WPS 中配置有大量的数据源,这里列出一系列需要进行调优的典型数据源。
业务流程引擎数据源 (BPE DataSource)
SCA 应用总线消息引擎数据源 (SCA Application Bus ME DataSource)
SCA 系统总线消息引擎数据源 (SCA System Bus ME DataSource)
通用事件基础构件总线消息引擎数据源 (Common Event Infrastructure Bus ME DataSource)
企业服务总线记录器调解数据源 (ESB Logger Mediation DataSource)
WebSphere 业务集成数据源 (WBI DataSource)
事件和事件目录数据源 (The Event and Event Catalog DataSources)
配置数据源预处理语句高速缓存大小 (Prepared Statement Cache Size)
预处理语句高速缓存优化了处理预编译语句和可调用语句的过程。这两种语句类型都有助于最大程度地提高应用程序与数据存储器之间的事务性能。预编译语句是指存储在 PreparedStatement 对象中的预编译结构化查询 (Structured Query Language, SQL) 语句。可调用语句是包含存储过程调用的 SQL 语句(存储过程是一系列预编译语句,这些语句执行任务并返回结果),此语句存储在 CallableStatement 对象中。
业务流程编排器容器广泛地使用 BPEDB 数据源来存留流程相关的数据,保存这些各种各样的数据意味着将使用大量不同的语句,这些语句的数量大大超过了数据源高速缓存的默认容量。这就造成了过多的缓存不命中的情况,从而导致缓存失效。此时,您可以通过增大预处理语句高速缓存大小来解决该问题。
BPE 数据库数据源的预处理语句高速缓存大小至少应该设为 128 。打开管理控制台,找到 资源 > JDBC > 数据源 > 数据源名 > 其他属性 > WebSphere Application Server 数据源属性,在此可以对语句高速缓存大小进行更改。
以下文章点击率最高
Loading…