長流程中的異步性發生在事務邊界。每一個長流程都由多個全局事務 (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…