劉凱強
(山東省農村信用社聯合社,濟南 250000)
商業銀行系統性能測試是通過模擬壓力源及測試工具獲取系統在日常負載場景、行內特色負載場景及高峰負載場景下系統的各項性能指標[1],協助系統開發人員進行性能調優,消除隱藏的性能風險,是商業銀行系統投產前必不可少的環節。性能測試工作中常用的測試、監控及分析工具詳見表1:

表1 性能測試相關工具
銀行核心系統的性能測試分析與系統優化的依據通常包括以下性能指標:
(1)核心吞吐量:核心系統每秒可以處理的事務數TPS(Transactions per second,由于核心系統的部分交易會聯動子交易,本文界定一次事務為核心系統角度的一次請求和響應過程,即最小獨立交易單元,而非業務角度一筆交易過程)。
(2)交易響應時間:交易報文從模擬渠道進入核心系統至渠道端接受到響應報文的處理歷時,包括一定時間段內的統計平均值(ART)以及交易的最高耗時(MRT)。
(3)并發交易成功率:交易成功是指核心系統完成正確的處理邏輯,完成數據更新與日志登記,并返回給請求端交易成功的響應碼與響應信息。商業銀行并發場景下,要求交易成功率不得低于95%。
(4)批處理效率:在一定的負載壓力下啟動批處理交易,通過批處理執行時間窗口和批處理過程中的交易響應時間指標來衡量。
(5)其他指標:各服務器的CPU使用率、內存使用率、I/O使用率及共享內存命中率等。
商業銀行核心系統性能測試場景包括典型交易基準場景、混合交易并發場景、批處理場景、穩定性場景及高可用可恢復性等場景,如商業銀行有特殊業務需求與技術架構,也可適當增加測試場景。
典型單交易基準場景對每一支典型交易進行測試,目的是獲取在無壓力條件(系統資源空閑遠大于交易占用)下,核心系統完成交易的系統代價,包括響應時間、系統資源占用量等,為模擬多個用戶并發、混合交易場景提供一個基礎參考數據。
銀行戰略定位的不同決定了其典型交易認定方法也不盡相同,通常會按照交易量、耗時頭部交易與重要交易取合集的方法來統籌選擇典型交易。首先分析歷史交易,理清每筆交易的數量以及每筆交易的平均耗時,按交易量排序后找出占交易總量超過60%的頭部交易,按耗時排序后找出耗時超過平均耗時的交易,以及重要交易(優勢業務交易、重點發展業務交易以及特定日期交易量大增的交易等),然后三者取合集,形成基準測試的典型交易清單。
在設計混合交易并發場景時,應根據行內交易分布,在不同的時期、時間段,把交易按照一定比例組合,形成模擬場景,比如模擬雙十一支付渠道交易高峰測試場景、模擬夜間批量代發工資高峰測試場景等。按照業務分析現有負載、預期負載及最大負載的情況,通過不同數量的模擬并發用戶向核心系統發起交易,獲取各場景的系統TPS、響應時間ART和MRT以及交易成功率,同時監控服務器的資源情況?;旌辖灰撞l場景是最貼近真實生產的測試場景[2],通過一系列測試、分析及優化,就可以找到真實投產后的系統性能極限。
批處理是銀行系統中比較重要、對性能影響較大的特殊交易,對批處理交易測試的主要性能指標包括批處理的時間窗口和對其他聯機交易的影響。批處理測試可采用的壓力交易包括聯機批量代發代扣交易、日常批處理、結息日批處理等。通過批處理測試場景,獲得批量執行的并發數、數據庫連接數等參數對批量執行及24小時業務的影響程度,藉此數據平衡批量執行時間與系統資源占用,從而保證投產后批量任務與24小時聯機業務在高負載情況下不會互相影響。
穩定性測試場景采用混合交易并發模式,對核心銀行系統進行較長時間(一般為8小時以上)的有負載測試,檢查系統在持續負載下的穩定性表現[3]。為了更貼近生產環境,負載壓力可以模擬為日交易量波動曲線,考察是否會出現宕機、響應時間是否波動、交易成功率下降、系統資源占用異常升高等情況。
商業銀行核心數據庫架構常應可恢復性,一般多設計為主備機架構。在考察應用服務器可恢復性能時,可采用典型交易混合并發模式,保持系統負載80%TPS壓力,在斷開一臺數據庫服務器的情況下,系統的交易處理能力是否符合要求。場景持續時間一小時,監控分析數據庫主備切換是否成功,在切換后是否出現數據庫響應時間升高、數據庫死鎖、交易中斷等異常情況,同時跟蹤記錄數據庫主備機切換耗時、失敗交易數量及失敗交易分布情況等。
商業銀行系統應用服務器架構在設計時??紤]多機均衡負載,當其中一臺或幾臺下線時,剩余服務器能夠承擔交易。在性能測試中,考察應用服務器高可用性,同樣需要采用典型交易混合并發模式來模擬真實生產場景,保持系統負載80%TPS壓力,考察在斷開一臺(或幾臺)應用服務器的情況下,系統的交易處理能力是否符合要求。監控分析系統在斷開后是否出現交易響應時間變長、交易成功率下降、系統資源占用超限等異常情況。
在互聯網金融的攻勢下,商業銀行業務也隨之迅猛發展,核心系統變更與投產勢在必行,但系統的投產也帶來一定的風險。如果系統投產程序性能較差,在業務高峰時期更容易達到性能瓶頸,引起交易大面積超時,造成業務吞吐量降低和客戶體驗下降等不良影響。通過性能測試,掌握系統的最大處理能力,對系統瓶頸進行優化,把投產風險降到最低,才能保證銀行交易的高效、穩定與安全。