範文齋

位置:首頁 > 行業範文 > 行業

銀行業的應用計算機系統分析員範文

行業4.53K

  論改進Web服務器性能的有關技術——論文1:銀行業的應用

銀行業的應用計算機系統分析員範文

  【摘要】

基於Web技術的數據庫應用是當前應用的一個熱點,在用戶數目與通信負荷很大的場合,提高Web服務器性能是一個迫切的課題。本文從筆者參與某個銀行系統項目開發的經歷出發,闡述了提高Web服務器的性能應滲入到項目論證、選型、開發、運行和管理的各個環節,只有各個環節都能充分考慮到性能與質量的需要,系統的性能纔是真正可保證的和可擴充的。

文章從系統的實際運行與相應的經驗出發,闡述了性能改進方面的一些具體措施。

比如:在本文中討論了Web服務器平臺的選型考慮;Web服務器的配置管理;應用系統本身的優化與預先設計系統時可擴性的性能保障等具體內容。

通過技術上的分析與改進,綜合性地運用多類措施與手段,在實際系統中,Web服務器運行的性能得到了一定程度的保證。

  【正文】

我所在的單位是把目標定位於金融領域開發IT應用的一家信息技術公司。隨着金融電子化建設的發展和商業銀行之間市場競爭的加劇,各主要商業銀行不斷通過信息技術提供新的金融產品,並且希望能整合市場渠道。比如主要的商業銀行不斷推出形形色色的網上銀行服務。在這種背景下,本人蔘與了開發新一代網上銀行產品,涉及到提供網上個人理財服務、網上外匯買賣服務、網上企業服務等具有市場競爭力的產品。作爲項目開發的組織者之一和主要的技術骨幹,在整個項目開發過程中始終要處於第一線,從而在改進Web服務器性能、提高整個網上平臺系統性能方面收穫良多,在本文中簡要討論如下,希望與讀者們共享經驗。在Web服務器配置與優化方面,我有如下幾方面主要的體會:

第一方面是Web服務器選型考慮。在Web服務器選型及網上平臺搭建之初,我們就已充分考慮整個網上平臺的性能及可擴展性問題。這一考慮爲該系統的穩定性及擴展性能力方面打下了堅實的基礎。

某銀行原有的一些網上產品由於開發較早,故而採用的是老式的HTTP Server+CGI程序調用的方式。這時,每一客戶請求需要對應於後端系統的系統進程來運行CGI程序來處理,系統的開銷相當大,系統的擴展能力也很差,性能已不能滿足業務處理的需要,故而在爲此銀行系統具體選型的時候,我們一開始就否決了這種方案。

通過市場上同類產品的比較選擇,我們選擇了國際商業機器有限公司IBM的Web Sphere產品系列作爲該行網上銀行系統的建立平臺。作出這樣選擇是因爲Web Sphere基於使HTTP Server和應用服務器相分離的整體架構,同時支持JSP、Servlet和企業組Java Bean等輕量級線程規範,所有的請求對應於應用服務器上的處理線程,系統的開銷低、效率非常高,同時Web Sphere整個體系結構相當的靈活,爲適應擴展需要可以作不同的橫向和縱向擴展,從而可以滿足各銀行未來的擴展需要。

正是因爲在一開始選型的時候我們就已考慮到未來的擴展需要,整個系統在接下來的幾次性能改進方面,我們大體上都能相對順利地達到了預期目標。

第二方面是Web服務器的性能配置。在一開始系統上線的時候,由於系統的負荷不是很大,爲了節省系統總擁有成本TCO投資,我們在一臺較低配置的IBM RS6000上投產了該系統。整個系統的HTTP服務器、應用服務器、通信服務器等均位於該臺機器上,由於初始投產時用戶不多,所以系統的性能基本上能令人接受。

但隨着業務的發展和用戶訪問量的增大,我們發現該服務器的響應變慢,系統的CPU利用率和內外存交換顯著增大。經過跟蹤,我們發現關鍵原因之一是系統的內存不足的緣故。由於網上服務器把大量用戶的會話信息保存在內存中供給應用系統使用,當內存不足時,大量Session信息被迫交換至硬盤,大量CPU時間消耗在等候內外存的交換上,系統效率迅速下降。

鑑於這種情況,我們把該服務器的內存由2GB擴充爲4GB,同時相應調整用戶會話信息的保存時間,這樣整個系統的效率又回到較爲理想的狀況。

由於新應用的不斷投產及數據庫操作的日益增加,我們後來逐漸監控到系統的`數據庫處於繁忙狀態,系統的錯誤日誌也記錄下了供應用服務器使用的數據庫連接處出現資源不足的情況。在這種背景下,我們認爲整個系統由於硬件配置所限,應該進行橫向擴展,因此我們把數據庫服務器分離出來,配置到另一較高性能的服務器上,相應定義的數據庫資源也大幅增加,這樣整個系統的性能又處於較爲理想的狀況。

第三方面是對應用系統進行相應的優化以提高性能。

Web服務器配置及相應的硬件擴展不失爲解決系統性能問題的一條捷徑,但應用系統的優化也是應該重點加以考慮的,畢竟它能夠在投入較少的情況下提高系統的運用效率。

在開發的初期,我們就已經十分注意系統的利用效率,比如提醒程序員儘量不要利用用戶會話信息(Session)來傳遞大的對象,對於內存要注意回收等。同時,通過內部的交流會推廣與介紹一些小的、有用的編程技巧來提高開發人員的水平,通過代碼的抽查,希望能在早期就發現問題等。

在系統運行期間,我們通過監控發現,應用服務器所基於的Java虛擬機,其內存堆的空閒空間有不斷下降的趨勢,每隔若干天導致空間消耗殆盡、無法分配新對象空間,從而導致系統重啓。在排除了系統本身問題的原因外,我們確定爲應用系統的開發有問題。通過從網上萬載IBM公司檢測Java虛擬機的相關工具對JVM進行監控後終於發現系統內部存在着不能回收內存的對象,再通過查找相應的程序發現在該程序中有“環狀”的對象引用,從而導致對象使用後不能被垃圾收集器所回收。這個問題的解決過程雖然十分艱苦,但由於該問題不能通過升級硬件或增加資源配置而得到根本解決,會給系統帶來很大的隱患。所以,整個過程的分析與解決是完全值得的,更何況通過查找故障原因的過程,給整個項目組上了生動的一堂軟件質量保證課,對項目組的質量意識起了很大的促進作用。所以說改進Web服務器的性能井不單純是系統管理方面的工作,它滲透到開發以及系統運行等一系列環節中。

第四方面預先考慮未來的擴展與性能需要。

隨着系統的發展及成熟,考慮到用戶訪問量的不斷上升,爲了預留系統的發展空間,我們最近又對整個系統作了一個系統性的升級。通過引入多臺HTTP服務器及應用服務器並行工作提高整個系統吞吐量及單點故障克服能力。由於在一開始選型的時候就已經充分考慮到動態負載均衡及橫向擴展方面的需要,這一項的升級無需對整個系統的體系結構作根本的變革,對應用程序來說,更是沒有造成任何影響。

整個項目歷時近兩年,從這兩年的系統情況來看,整個系統是成功的。根據我親身的經歷,系統性能並不單純是系統運行與管理階段的問題,而是滲透在項目論證、開發以及運行的各個階段。只有在各個階段都能充分考慮性能方面的需要,在實際運行時,整個系統的性能纔可能真正有保障。在技術方面來看,可以綜合利用選型評估、硬件擴展、應用優化和系統配置優化等一系列的手段;比如在硬件擴展方面,又可以分爲主要部件擴容,縱向升級、橫向升級等方面。在我們的項目實踐中,曾綜合地利用了上述的各種手段。比如某銀行的整個系統從日訪問量不足1萬至現在的每日超過I0萬次以上的點擊的發展情況來看,整個系統的性能保障及提高方案是比較成功的。