|
如何應對銀行交易系統(tǒng)性能下降
|
|
文章來源:名易軟件銀行交易系統(tǒng)性能下降,是由于后臺的數(shù)據(jù)規(guī)模、應用的邏輯復雜度、客戶并發(fā)的訪問數(shù)在逐步增加,日積月累就會跨越最初的設計容量,從而遭遇性能瓶頸。 性能問題的范圍銀行交易系統(tǒng)又稱為銀行OLTP系統(tǒng)(On-LineTransactionProcessing),即銀行聯(lián)機事務處理系統(tǒng),其基本特征是客戶交易數(shù)據(jù)實時發(fā)送到銀行后臺主機進行處理,并在極短的時間內(nèi)返回響應。銀行交易系統(tǒng)一般都是實時系統(tǒng)(RealtimeSystem),性能至關重要。銀行交易系統(tǒng)包括核心交易系統(tǒng)、信用卡系統(tǒng)、大前置系統(tǒng)、網(wǎng)上銀行、電話銀行、手機銀行、第三方存管、銀基通等。銀行交易系統(tǒng)性能管理可概括為:客戶請求是否被快速處理、系統(tǒng)資源是否得到合理利用、系統(tǒng)是否能夠連續(xù)不間斷地運行三個方面。決定銀行交易系統(tǒng)性能的往往都是后臺的Server系統(tǒng)。從性能分析的角度,后臺系統(tǒng)大致可以劃分如下幾類:硬件組件有服務器主機、網(wǎng)絡等;系統(tǒng)軟件包括OS、中間件、DBMS等;應用軟件如聯(lián)機應用、批量應用、定時應用等;系統(tǒng)架構(gòu)是指組件之間的協(xié)作方式,比如應用與數(shù)據(jù)庫分離運行還是單機運行等。這些組件都可能成為銀行交易系統(tǒng)潛在的性能瓶頸。不同的是,硬件組件與系統(tǒng)軟件組件的性能瓶頸容易被發(fā)現(xiàn),也容易被快速處理。而應用軟件和系統(tǒng)架構(gòu)方面存在的性能瓶頸不容易被發(fā)現(xiàn),發(fā)現(xiàn)與解決的周期會很長。需要說明的是,系統(tǒng)性能問題與系統(tǒng)故障有所不同。故障往往是由于某些組件異常導致交易系統(tǒng)部分或整體無法正常工作;性能問題是指在系統(tǒng)各個組件正常情況下,處于瓶頸的組件過于繁忙而導致系統(tǒng)整體服務能力下降。性能問題得不到及時處理也可能引發(fā)系統(tǒng)故障。性能問題就像亞健康,而系統(tǒng)故障就像患病。銀行交易系統(tǒng)的性能問題不明顯時,客戶和交易柜員基本察覺不到系統(tǒng)的異常。當性能問題逐漸積累并且爆發(fā)之后,交易系統(tǒng)的客戶就會明顯感覺到異常,客戶滿意度也隨之下降。主動發(fā)現(xiàn)問題當銀行因交易系統(tǒng)性能問題產(chǎn)生客戶投訴后再開始應對處理,就比較倉促和被動。所以最好是能在日常的運營維護中發(fā)現(xiàn)系統(tǒng)的性能問題——當問題還沒有影響到業(yè)務本身時,處理起來會比較主動。利用監(jiān)控工具和報警規(guī)則,找到問題的征兆。在銀行交易系統(tǒng)運行中,大多數(shù)性能問題可以從操作系統(tǒng)、網(wǎng)絡、數(shù)據(jù)庫、中間件的細微變化中察覺出來,例如內(nèi)存過度消耗、CPU過高使用率、進程頻繁啟動或數(shù)量過多、數(shù)據(jù)庫會話過于繁忙、中間件隊列變長等。所以常見的監(jiān)控對象通常是:CPU、磁盤IO、網(wǎng)絡、文件系統(tǒng)、進程、系統(tǒng)日志、數(shù)據(jù)庫負載和中間件隊列等。可以使用成熟的商業(yè)監(jiān)控套件、也可以使用自主編寫的監(jiān)控軟件、性能檢測腳本或者軟件自帶的工具,比如:Quest、HPOVO、IBMTivoli等。操作系統(tǒng)自身也有豐富的系統(tǒng)管理工具可用。對特定的系統(tǒng)軟件,比如Oralce、Tuxedo、Informix等軟件系統(tǒng),需要有針對性地引入監(jiān)控工具并建立報警規(guī)則。以Informix數(shù)據(jù)庫為例,監(jiān)控工具除了自身的onstat命令外,IDS11會自帶圖形化的監(jiān)控工具OpenAdminTool。第三方的監(jiān)控工具有臺灣庫柏的DBSonar軟件等。在應用系統(tǒng)監(jiān)控方面,應該有對應的監(jiān)控工具。簡言之,如果全部性能組件都有相應的監(jiān)控工具和報警規(guī)則,則比較有利于快速發(fā)現(xiàn)問題。收集各組件的性能數(shù)據(jù)。銀行交易系統(tǒng)出現(xiàn)性能問題的時間段可能很短,也可能沒有規(guī)律。為了方便專家分析,在交易系統(tǒng)出現(xiàn)性能問題的最短時間里,應盡可能收集該時段中各性能組件的運行數(shù)據(jù),不管問題發(fā)生在操作系統(tǒng)、存儲、數(shù)據(jù)庫、應用服務器還是WebServer等;我們需要借助軟件工具來收集有用的系統(tǒng)性能信息,直接在每個被監(jiān)控的系統(tǒng)中搜集端到端的準確信息。應高度重視數(shù)據(jù)庫系統(tǒng)運行信息的收集。很多情況下,數(shù)據(jù)庫運行信息收集需要一些輔助手段,比如informix在版本11之前的性能監(jiān)控不夠完善,獲取會話信息比較困難,即使借助DBSonar等工具獲得的信息也可能是不準確的。往往還要借助一些其他的工具或腳本來收集數(shù)據(jù)。對應用方面的數(shù)據(jù)收集還可以開啟報文記錄功能,利用存儲系統(tǒng)對數(shù)據(jù)庫和文件系統(tǒng)做快照,能方便重現(xiàn)問題,并且可分析和驗證解決方案是否有效。定位性能瓶頸發(fā)現(xiàn)銀行交易系統(tǒng)的性能問題之后,需要定位性能瓶頸??梢宰裱@種查找順序:從近期有變更的組件到近期無變更的組件,從應用類組件到系統(tǒng)類組件,從軟件組件到硬件組件。請銀行交易系統(tǒng)的主要相關廠商協(xié)同分析是好辦法。明確責任有利于快速解決問題。在各供應商收集的性能信息基礎上進行實時和歷史分析,可大大縮短問題查找和等待的時間。各廠商一般都有豐富的性能問題案例庫,可以結(jié)合性能問題特征,采用分段排除法,最后定位系統(tǒng)的性能瓶頸出在哪里。實踐當中應注意,性能瓶頸所在環(huán)節(jié)也許并非是觸發(fā)性能問題的初始原因。很多情況下,應用本身的設計缺陷會造成數(shù)據(jù)庫過于繁忙。有的數(shù)據(jù)庫的BUG也可能造成數(shù)據(jù)庫服務器CPU利用率過低或過高。不同的原因也許會造成相似的性能問題癥狀。解決性能問題解決性能問題可以參考專家建議和方案,有選擇地進行實施。實施前需要進行反復的驗證和評估,最后在現(xiàn)有方案中確定最優(yōu)的解決方案并進行實施。不同性能組件的解決方法有一些常規(guī)的處理方法:硬件組件問題:常見的處理辦法是對硬件進行擴容或者升級,可以快速解決。比如:對存儲系統(tǒng)的更新?lián)Q代,對服務器增加CPU數(shù)量、擴充內(nèi)存量、升級存儲光纖卡等;系統(tǒng)軟件問題:常見的處理辦法是升級為新版本或安裝新補丁,或者調(diào)整系統(tǒng)配置參數(shù)。應用本身的問題:應用問題多屬設計問題,常見的做法是對設計拙劣的應用代碼逐步優(yōu)化。下列的做法一般有利于交易系統(tǒng)性能的提高:交易系統(tǒng)的日志采用異步方式記錄,優(yōu)于同步方式記錄日志;交易事務小型化能減少鎖沖突;記錄高開銷的SQL,分析SQL的優(yōu)化寫法等。系統(tǒng)架構(gòu)的問題:交易系統(tǒng)在架構(gòu)設計之初就應將靈活性、可擴展性納入其中。當某個性能組件成為性能瓶頸時,只需要在配置上增加同種組件的數(shù)量即可,方便快捷。拙劣的架構(gòu)可能由于不具備可擴展性而成為性能瓶頸,引發(fā)性能問題。
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|
|
|
|