隨著銀行業務的不斷豐富、拓展,系統賬戶數量、交易總量及業務類型種類急劇上升,銀行核心系統對高并發實時交易、業務峰值處理能力需求持續攀升。以前一個客戶對應一兩個賬戶,現在人民銀行出文賬戶分類,一對十的情況都屢見不鮮,系統規模不斷的增大,有可能超出交易系統最初設定的容量,因而商業銀行承擔的確保交易系統穩定運行的壓力也越來越大。


核心系統是現代商業銀行開展業務的基石。對于銀行來說,核心系統的性能要求是最高的,銀行系統群中對于核心系統的訪問量以及并發數等指標都是遠遠高于其它系統,它的性能決定整個銀行IT系統群的性能指標高低。由此也說明了,核心系統的性能優劣直接影響了商業銀行業務的可用性與穩定性。


那么現在中小型銀行面對業務量的急劇攀升,出現性能瓶頸時帶來哪些問題:




系統資源總感覺不足,長期花費大量的資金用于更新硬件設備

· CPU  經常性100%
· DISK  I/O持續高位


系統經常性或者規律性的出現響應滯后、業務辦理緩慢

· 業務高峰,系統響應滯后或超時,客戶滿意度下降
· 業務人員無法持續工作,業務辦理斷斷續續,苦不堪言
· 后臺批處理運行時間越來越長

核心系統越來越復雜,猶如潘多拉寶盒,無人敢碰

· 系統不出事就好,業務擴展舉步維艱
· 系統運維人員如履薄冰


先來說說什么是系統性能。這個定義非常關鍵,如果我們不清楚什么是系統性能,那么我們將無法定位。系統性能問題是系統各個組件在正常情況下,處于瓶頸的組件過于繁忙而導致系統整體服務能力下降的情形,性能問題不及時處理可引發大面積的系統故障。


在此,系統性能提出兩個關鍵性指標:


1.Throughput,吞吐量。也就是單位時間內可以處理的請求數,任務數。它以系統資源為對象的,系統資源的好壞直接影響了吞吐量的(理論)極限值。


2.Response Time,響應時間。也就是系統在處理一個請求或一個任務時的耗時。它是以某個請求為對象的,請求的大小以及復雜程度直接影響到響應時間的長短。


一般來說,一個系統的性能受到這兩個條件的約束,缺一不可。例如,系統可以頂得住一百萬的并發,但是系統的響應時間是2分鐘以上,那么,這個一百萬的負載毫無意義。系統響應時間很短,但是吞吐量很低,同樣沒有意義。所以,一個好的系統的性能必然受到這兩個條件的同時作用。


· Throughput越大,Response Time往往會越差。因為請求量過大,系統太繁忙,所以響應速度自然會低。


· Response Time越好,能支持的Throughput就會越高。因為Response Time短說明處理速度快,于是就可以處理更多的請求。


總的來說,銀行核心系統性能體現可概述為客戶請求是否被快速處理,系統資源是否得到合理利用,系統是否能夠連續不間斷的運行主要三個方面。

    現通過實際生產運維結合核心系統運行的情況,探討如何定位和分析系統性能瓶頸。


    當系統存在性能問題的時候,不是急于去翻查程序的代碼,這個毫無意義。首要確認的是系統資源使用狀況,看看系統的CPU利用率,看看內存使用率,看看系統磁盤I/O等。


    (1)CPU利用率:如果CPU利用率不高,但是系統的Throughput和Response Time上不去了,這說明我們的應用程序并沒有忙于計算,而是忙于別的一些事,比如I/O等。


    (2)I/O繁忙度I/O和CPU一般是反著來的,CPU利用率高則I/O越空閑,I/O越繁忙則CPU利用率越小。關于I/O,我們要關注兩個事,一個是磁盤文件I/O繁忙度和有無特殊熱點盤,一個是內存換頁率。這兩個關鍵節點都會與系統性能息息相關。


    (3)應用程序如果CPU不高,I/O不高,內存使用不高,網絡帶寬等使用不高,但是系統的性能就是上不去。這說明應用程序存在了問題。比如,程序被阻塞了、可能是因為等哪個鎖、可能是因為等某個資源,或者是在切換上下文等。

系統性能優化要有合理的取舍,要在各個相關因素之間取得平衡,調優的工作應從整體出發,如果對系統的調整只是集中于某一方面,那么就不可能達到優化系統性能的目的。


性能優化的任務就是要增加事務處理能力,通過提高吞吐量和縮短響應時間來提高并發處理能力。提高并發處理能力可以通過資源重復、時間重迭和資源共享的方法。


資源重復利用硬設備的多重設置,即增加相同的硬件的設備數量,使得這些硬設備同時工作,以提高系統的處理能力;


時間重迭是多個處理時間上錯開,輪流使用同一設備,而不是增加設備的數量,典型的時間重迭方式就是流水線方式(錯峰避鎖);


資源共享主要釆用軟件手段讓多個程序按時間片來輪流使用同一套硬件資源,以提高利用率。


核心業務系統的性能優化措施根據如上所述,主要包括硬件、操作系統、應用軟件等優化。


(1)硬件組件問題

常見的處理辦法是對硬件進行擴容或者升級可以快速解決。 比如對存儲系統的更新換代,可能會帶來交易相應時間的大幅度改提升;對服務器增加CPU數量、 擴充內存等。


(2)系統軟件問題

常見的處理辦法是升級為新版本或安裝新補丁,或者調整系統配置參數。系統軟件升級環節看似簡單卻可能引起兼容性問題, 其影響范圍是全系統級別的,需慎重并經充分測試后,方可部署實施。


(3)應用本身問題

應用問題多屬設計問題,常見的做法是對設計拙劣的應用代碼逐步優化。應用代碼的優化可能是個長期的任務,因為導致性能不良的應用設計環節可能不止一個,而是一個模塊或是一個系統機制等。 且伴隨數據規模和并發訪問數的增長,會抹去一部分性能調優的效果。具體應用的問題,針對各行的處理措施要結合生產實際運行來設計。

埃及王朝APP