《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于國產(chǎn)基礎軟件應用系統(tǒng)的性能測試與優(yōu)化研究
基于國產(chǎn)基礎軟件應用系統(tǒng)的性能測試與優(yōu)化研究
來源:微型機與應用2010年第11期
李天日1,林 寧2,高 林2,吳新松2
1.桂林電子科技大學 計算機與控制學院,廣西 桂林 541004;2.中國電子技術(shù)標準化研究所,北京
摘要: 針對國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)的性能需求,討論了如何利用測試工具來測試系統(tǒng)的性能,并對影響系統(tǒng)性能的主要因素進行了分析,提出了一個系統(tǒng)的性能優(yōu)化方案。測試結(jié)果表明,該方案提升了系統(tǒng)的整體性能。
Abstract:
Key words :

 摘  要: 針對國產(chǎn)基礎軟件醫(yī)療信息系統(tǒng)的性能需求,討論了如何利用測試工具來測試系統(tǒng)的性能,并對影響系統(tǒng)性能的主要因素進行了分析,提出了一個系統(tǒng)的性能優(yōu)化方案。測試結(jié)果表明,該方案提升了系統(tǒng)的整體性能。
關鍵詞: 國產(chǎn)基礎軟件;應用系統(tǒng);性能測試;優(yōu)化

    國產(chǎn)基礎軟件的性能是影響軟件應用的關鍵因素,只有國產(chǎn)基礎軟件的應用系統(tǒng)在性能方面滿足了用戶的需求才能被用戶接受。應用系統(tǒng)與國產(chǎn)基礎軟件的集成理論上是可行的,但是,在高并發(fā)量、高訪問數(shù)據(jù)量情況下,基于國產(chǎn)基礎軟件應用系統(tǒng)的性能能否滿足需求尚未得到驗證。因此,需要對國產(chǎn)基礎軟件組合以及包含實際應用的完整系統(tǒng)進行性能測試。
    本文以基于國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)為例,介紹如何測試系統(tǒng)在承受高并發(fā)量、高訪問數(shù)據(jù)量情況下的性能,并對影響系統(tǒng)性能的主要因素進行分析,提出了系統(tǒng)的性能優(yōu)化方案。實驗結(jié)果表明,該方案大幅提高了系統(tǒng)性能,為基于國產(chǎn)基礎軟件的應用系統(tǒng)性能優(yōu)化提供了一個可借鑒的方法。
1 性能測試
1.1 性能測試方法

    性能測試是通過模擬大量用戶與系統(tǒng)進行交互的行為,對被測系統(tǒng)進行加壓,獲取系統(tǒng)負載增加或在特定負載時,用戶的真實體驗,從而確定系統(tǒng)所能承受的最大負載與特定負載下的性能表現(xiàn)。
    系統(tǒng)的性能測試方法較多,按照測試目的分類,可以分為負載測試、壓力測試、配置測試、并發(fā)測試、可靠性測試等[1]。其中,負載測試是通過在被測系統(tǒng)上不斷增加負載壓力,獲得系統(tǒng)在不同負載下的性能表現(xiàn)。壓力測試主要測試系統(tǒng)資源在飽和狀態(tài)時,應用系統(tǒng)能夠提供的最大服務級別。本文選擇負載測試和壓力測試對系統(tǒng)進行了多輪的測試。
1.2 性能指標
    性能指標是描述系統(tǒng)性能最直接的數(shù)據(jù),提供了性能度量的標準。本文在測試中對并發(fā)用戶數(shù)、響應時間、吞吐量、資源利用率等性能指標進行監(jiān)控。性能指標描述如下:
    (1)并發(fā)用戶數(shù),在特定時間內(nèi),同時進行會話的用戶數(shù)。
    (2)響應時間,從請求的發(fā)出到客戶端收到服務器響應所經(jīng)歷的時間延遲。
    (3)吞吐量,在單位時間內(nèi)系統(tǒng)處理客戶請求的數(shù)量。
    (4)資源利用率,系統(tǒng)各種資源的使用狀況,比如服務器的CPU、內(nèi)存和網(wǎng)絡帶寬等。
2 性能測試實施
2.1 系統(tǒng)分析

    醫(yī)療信息系統(tǒng)構(gòu)建于國產(chǎn)基礎軟件的政務信息化領域平臺體系,采用J2EE架構(gòu),使用JSP、Strut、Hibernate等技術(shù)開發(fā),是以國產(chǎn)基礎軟件為核心、低成本的公共服務系統(tǒng)原型和解決方案。醫(yī)療信息系統(tǒng)體系結(jié)構(gòu)如圖1所示。

    醫(yī)療信息系統(tǒng)主要面向各大醫(yī)院,對醫(yī)院的需求調(diào)研與系統(tǒng)分析如表1所示[2]。

    性能測試需要模擬大量用戶的操作行為,需要測試工具的支持來實現(xiàn)用戶的行為模擬、負載的生成、數(shù)據(jù)采集與分析等。本文引入測試工具LoadRunner對系統(tǒng)進行性能測試,測試基于國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)的性能能否滿足表1所示的需求。
2.2 測試環(huán)境
    測試時,使用1臺PC機作為負載測試機,1臺服務器作為應用服務器和數(shù)據(jù)庫服務器。PC機采用100 Mb/s局域網(wǎng)連接服務器。服務器軟件組成方案如表2所示[3]。


2.3 錄制測試腳本
    測試腳本是一組代碼,執(zhí)行時,可以模擬用戶操作對服務器產(chǎn)生的請求數(shù)據(jù),或是模擬用戶執(zhí)行操作的過程、用戶等待行為等。腳本的錄制按照以下步驟執(zhí)行:
    (1)使用LoadRunner錄制測試從業(yè)務使用頻繁程度以及負載量的大小選擇新建患者資料、患者資料查詢、新增日程功能作為三組測試[4]。這三組測試腳本模擬的執(zhí)行過程為系統(tǒng)登錄、業(yè)務操作和退出系統(tǒng)。
    (2)每個操作定義為一個事務,在事務前后加入隨機的思考時間。
    (3)在事務前設置集合點,保證用戶執(zhí)行操作的并發(fā)。
    (4)在用戶實際操作的過程中,不同用戶提交的數(shù)據(jù)、系統(tǒng)動態(tài)生成的會話標志是不一致的。通過參數(shù)化來設定差異值的取值范圍、迭代方式,實現(xiàn)數(shù)據(jù)的變量化,而系統(tǒng)的會話標志如session,則需要設置關聯(lián)來保存。
2.4 設計測試場景
    在性能測試中,常見的錯誤觀點是只設置單一的場景。場景的設計是至關重要的,只有設計的測試場景真實地反映用戶的實際場景,性能測試的結(jié)果才可靠。
    場景的設計需要考慮到系統(tǒng)運行時,不同操作對系統(tǒng)形成的負載差異,需要確定典型的應用場景下不同操作用戶的比例[5]。醫(yī)療信息系統(tǒng)日常執(zhí)行新建患者資料、查詢患者資料、新建日程的比例分別為25%、60%、15%。
    在創(chuàng)建的場景中載入已錄制的三組測試腳本,并設置執(zhí)行比例。編輯場景中的計劃生產(chǎn)器,設置虛擬用戶以一定的間隔時間按比例遞增,逐步啟動與服務器建立連接。
2.5 分析測試結(jié)果
    在性能測試的過程中,LoadRunner會收集到大量的測試數(shù)據(jù),包括每個性能指標,如事務的錯誤、警告和通知信息等。并發(fā)用戶數(shù)為200的事務響應時間如表3所示。

    在測試過程中出現(xiàn)的問題:(1)大量用戶并發(fā)時,服務器CPU、內(nèi)存的資源利用率卻很低;(2)事務執(zhí)行成功率低、成功事務的平均響應時間長,很多事務因為連接超時而失?。?3)出現(xiàn)內(nèi)存泄露;(4)Tongweb控制臺顯示連接數(shù)據(jù)庫時出現(xiàn)網(wǎng)絡通信異常。
    從測試結(jié)果可見,系統(tǒng)存在性能瓶頸。因此,為了使系統(tǒng)達到最佳的性能,需要分析測試環(huán)境對系統(tǒng)性能的影響,對其進行性能優(yōu)化,摒除系統(tǒng)性能瓶頸。
3 系統(tǒng)優(yōu)化
3.1 系統(tǒng)優(yōu)化框架

    根據(jù)Mercury公司的報告,系統(tǒng)的性能問題由許多因素構(gòu)成。系統(tǒng)結(jié)構(gòu)、代碼的優(yōu)化程度、網(wǎng)絡環(huán)境、數(shù)據(jù)庫服務器、應用服務器都會對系統(tǒng)的性能表現(xiàn)造成影響。但是,影響系統(tǒng)優(yōu)化主要因素是網(wǎng)絡環(huán)境、應用程序、應用服務器和數(shù)據(jù)庫服務器[6]??紤]到這些因素之間的相互依賴關系,采用從高層到低層的優(yōu)化方法。該方法的特點是先調(diào)優(yōu)高層的環(huán)境,然后調(diào)優(yōu)較低層的環(huán)境,符合高層實現(xiàn)依賴于低層實現(xiàn)的一般規(guī)律。優(yōu)化層次如圖2所示,但如果隨意調(diào)整,容易造成循環(huán)。

    (1)網(wǎng)絡環(huán)境優(yōu)化
    網(wǎng)絡是影響系統(tǒng)性能的重要因素之一,其影響主要反映在事務的響應時間與吞吐量上。在測試過程中,如果吞吐量沒有隨并發(fā)用戶增多而增大,且事務響應時間比較長時,可以考慮對網(wǎng)絡進行優(yōu)化,改善網(wǎng)絡的帶寬。
    (2)應用程序優(yōu)化
    應用程序優(yōu)化針對數(shù)據(jù)訪問層,其優(yōu)化措施主要有以下幾方面:(1)優(yōu)化SQL語句;(2)盡量引入連接池機制,減少頻繁打開、關閉數(shù)據(jù)庫連接的操作,控制當前激活的數(shù)據(jù)庫連接總數(shù),防止系統(tǒng)過載;(3)引入緩存機制,以減少磁盤I/O的次數(shù)。這些優(yōu)化措施能夠提高數(shù)據(jù)讀取速率,減少訪問響應時間,降低資源的使用率。
    (3)應用服務器優(yōu)化
    應用服務器優(yōu)化集中在最大連接限制數(shù)、內(nèi)存配置。在大量并發(fā)的情況下,應用服務器承受很大的負載壓力,過多地連接會很快消耗掉大量系統(tǒng)資源,過低的連接限制會增大連接時延,延長事務響應時間。優(yōu)化時根據(jù)系統(tǒng)資源合理設置應用服務器最大連接限制數(shù)、內(nèi)存,避免內(nèi)存泄露現(xiàn)象出現(xiàn),盡量減少響應時間。
    (4)數(shù)據(jù)庫系統(tǒng)優(yōu)化
    數(shù)據(jù)庫系統(tǒng)優(yōu)化主要是配置數(shù)據(jù)緩存區(qū)大小、最大并發(fā)會話數(shù),為數(shù)據(jù)庫建立合理的索引。設置較大數(shù)據(jù)緩存區(qū),可以減少數(shù)據(jù)交換次數(shù),降低系統(tǒng)資源消耗。為大數(shù)據(jù)量、訪問頻繁的數(shù)據(jù)庫表建立合理的索引,能夠消除對表的順序存儲,從而提高系統(tǒng)的檢索性能。在CPU資源和I/O資源可用的情況下,如果服務器有很長的事務等待隊列,增大最大并發(fā)會話數(shù),可以減少響應時間。
3.2 醫(yī)療信息系統(tǒng)的優(yōu)化方案
    本文的性能測試是在局域網(wǎng)中進行,因此可以排除網(wǎng)絡帶寬對系統(tǒng)性能的影響。通過分析性能測試結(jié)果,結(jié)合系統(tǒng)優(yōu)化框架,醫(yī)療信息系統(tǒng)的優(yōu)化措施如下:
    (1)應用系統(tǒng)的數(shù)據(jù)庫訪問層采用了數(shù)據(jù)庫持久化技術(shù)Hibernate。編輯應用程序的配置文件hibernate.cfg.xml,引入第三方的連接池c3p0,設置連接池的最大連接數(shù)為100;在Hibernate中使用二級緩存,設置Hibernate的加載特征為延遲加載。
    (2)在應用服務器方面,調(diào)整Tongweb的JVM堆棧和內(nèi)存的最大值、最大連接人數(shù)。編輯TongWeb4.0/bin/tongserver.sh文件,把JAVA_ARGS=”-Djmx.invoke.getters=true”修改為JAVA_ARGS=”-Xms256m-XmX750m”,調(diào)整JVM堆棧和內(nèi)存的最大值為750 M,增大Tongweb的JVM虛擬堆棧和內(nèi)存值后,不再出現(xiàn)內(nèi)存泄露現(xiàn)象;編輯tongweb4.0/conf/tongweb.xml中socket-back-log由50調(diào)為200,調(diào)整Tongweb的減少需要等待連接數(shù),減少響應時間。
    (3)在數(shù)據(jù)庫系統(tǒng)方面,通過對數(shù)據(jù)表的檢查,發(fā)現(xiàn)數(shù)據(jù)庫表沒有建立索引,為訪問頻繁的表添加了索引。DM數(shù)據(jù)庫的參數(shù)調(diào)整如表4所示。


    數(shù)據(jù)庫作出這樣的修改主要是大量并發(fā)時,由于數(shù)據(jù)量大,一般將數(shù)據(jù)緩沖區(qū)設為物理內(nèi)存的80%左右(BUFFER的單位值為8 KB);數(shù)據(jù)庫的最大會話數(shù)需要大于應用程序所設置的連接池;CPU仍存在可用資源,可提高工作線程數(shù),減少響應時間。優(yōu)化后,并發(fā)用戶數(shù)為200的事務響應時間如表5所示。


    通過對表3、表5結(jié)果對比可以看出,經(jīng)過系統(tǒng)優(yōu)化后,大幅提升了系統(tǒng)的性能。系統(tǒng)性能也達到了醫(yī)療信息系統(tǒng)的性能總體需求,確保了基于國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)能夠滿足醫(yī)療工作及日常辦公需求。
    本文介紹了基于國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)的性能測試方法和過程,并對影響系統(tǒng)性能的主要因素進行了分析,提出了一個系統(tǒng)的性能優(yōu)化方案。測試結(jié)果表明,本文提出的優(yōu)化方案可以明顯改進基于國產(chǎn)基礎軟件的醫(yī)療信息系統(tǒng)的性能,能夠滿足應用的需求,可以應用于我國的醫(yī)療信息化建設中。
參考文獻
[1] 段念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學出版社,2006.
[2] 郝建營,晏海華,劉超,等.一種有效的Web性能測試方法及其應用[J].計算機應用研究,2007,(1):275-277.
[3] 張忠磊,孫玉娟,李秀芳.國產(chǎn)軟硬件在實現(xiàn)電子政務集成應用上的框架研究[J].微計算機信息,2006,22(12-3):198-199.
[4] DRAHEIM D, GRUNDY J, HOSKING J. Realistic load testing of Web applications[C]. Proceedings of the Conference on Software Maintenance and Reengineering,2006.
[5] 簡玲.B/S系統(tǒng)性能測試的設計與實現(xiàn)[J].計算機工程,2009,35(10):51-53.
[6] 熊忠陽,李光勇,張玉芳,等.Web集群系統(tǒng)性能測試與優(yōu)化[J].計算機應用研究,2008,25(3):826-832.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。