閱讀屋>行業> 銀行業的應用計算機系統分析員

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

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

  論改進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萬次以上的點選的發展情況來看,整個系統的效能保障及提高方案是比較成功的。

【銀行業的應用計算機系統分析員】相關文章: