摘要本文基于軟件性能的測試方法、分析方法和性能指標,對影響軟件系統性能的因素進行分析,從不同的層次和角度給出了性能優化的分析方法和優化策略。
中圖分類號:TP39文獻標識碼:A
0 引言
軟件系統的用戶數往往是不斷增加的,甚至成百上千數量級的增長,為使軟件系統能在應用環境中滿足需求的同時達到較好的性能,對軟件系統進行優化是很重要的。分析軟件的性能需首先考慮軟件系統性能的性能指標及性能的測試、分析方法,確定軟件系統在基準環境下的基準性能指標。基于對軟件性能測試的各項測試數據和衡量指標,通過不同的分析方法進行不同層次的優化,以使軟件系統取得較好的性能。
1 軟件系統的性能視角、測試方法、性能指標
1.1 性能視角
不同的軟件系統的相關人員對于軟件系統性能的關注視角是不一樣的。一般從三個角度予以關注。
(1)用戶視角。從用戶角度看,軟件性能就是軟件對用戶操作的響應時間。從用戶發出操作指令到軟件系統把操作結果呈現給用戶所消耗的時間,即是用戶關注的性能。這種用戶感受到的響應時間既有客觀成分,也有主觀成分,甚至包括心理因素。用戶不考慮影響響應時間的軟件因素或是硬件因素。
(2)管理員視角。從管理員的角度看,他們不僅需要關注普通用戶感受到的軟件性能,還需要考慮如何對系統進行性能優化,因此,系統的資源利用率、系統的可擴展性、系統的容量等性能都被他們所關注。
(3)開發人員視角。從開發人員的角度來說,除用戶和管理員關注的軟件性能外,開發人員更關心如何在設計和實現上提高軟件系統的性能,比如:系統架構的設計、數據庫的設計、算法的設計、代碼的的實現方式等等。
1.2 測試方法
目前,不同的文獻資料對性能測試的關注角度和分析方法不盡相同,無統一的標準。我們根據軟件系統較常涉及到的性能視角,給出了一些較常用到的測試方法。
(1)一般性能測試。模擬實際的軟件運行場景,測試系統的性能是否滿足在基準的運行環境下的基準性能要求。
(2)負載測試。通過對軟件系統持續施壓,測試直到軟件系統達到“預期的負載性能指標”時的負載性能。這種“預期的負載性能指標”通常是事先定義的。負載測試為系統的性能優化提供參考數據。
(3)壓力測試。通過測試系統在資源利用飽和的狀態下的運行性能來考察系統的穩定性。
(4)配置測試。通過對系統運行的軟/硬件環境的調整,測試各種環境對系統性能的影響,以確定資源的最優配置。
(5)并發測試。測試某應用或模塊在多用戶并發訪問情況下的系統性能。
(6)可靠性測試。讓系統在承載一定的壓力的情況下,連續運行被測系統,檢查系統的穩定程度。通常用MTBF(Mean Time Between Failure)——錯誤發生的平均時間間隔來衡量系統的穩定性。MTBF越大,系統的穩定性越強。
1.3 性能指標
(1)響應時間。用戶感受到的系統響應時間可以劃分為客戶端呈現時間、服務器處理時間和網絡傳輸時間。其中服務器的處理時間又包括數據庫服務器的處理時間和應用服務器的處理時間。
對于B/S架構的軟件系統來講,普遍接受的響應時間標準為“2-5-8秒”。即2秒內的響應時間被認為是“非常有吸引力的”,5秒內的響應時間被認為是“比較不錯的”,8秒是基本符合性能要求的。超過8秒是不容易被接受的。
(2)并發用戶數。指用戶對系統的某項業務同時進行操作時的用戶數目。可通過測試系統在不同的性能狀態所支持的并發用戶數來了解系統承受負載和壓力的性能。
(3)吞吐量。吞吐量是指單位時間內系統處理客戶請求的數量。可用“請求數/秒”、“頁面數/秒”、“字節數/秒”來衡量。
2 性能優化策略
性能優化主要從不同的角度對軟件系統的各個層次進行性能優化。以使軟件系統在確定基準環境和基準性能指標的情況下,達到或好于基準的性能指標。影響系統性能的因素較多,本文基于上述對系統的性能視角、測試方法和性能指標的分析,從影響系統性能的硬件層次、應用層次和軟件設計層次三個主要方面對系統性能優化的策略進行分析。
2.1 硬件系統及其配置的優化
硬件系統的優化主要是提高軟件系統運行的硬件環境的性能。從而提高系統可承載的負載和壓力,縮短系統的響應時間,提高系統的吞吐量。可采取的主要的主要方法有:(1)提高服務器的性能。采用具有更高配置的應用服務器和數據庫服務器。(2)調整網絡環境。采用具有更高性能的網絡設備和具有更高帶寬的組網技術。(3)采用最優化的網絡管理方案。(4)提高客戶端硬件性能。(5)通過配置測試,調整系統資源配置方案,使資源得到最大限度的合理利用。
2.2 應用級優化
(1)調整軟件系統的架構,以使軟件系統的架構具有最優的適合業務處理邏輯的方案。比如,結合實際的應用環境考慮系統應采用C/S架構或是B/S架構,或是(下轉第121頁)(上接第97頁)結合兩種架構的優缺點,同時采用兩種架構。一般來講,在服務器性能允許的條件下,對于業務處理邏輯相對簡單的模塊或應用宜采用B/S架構,而對于無較高的系統維護要求,業務邏輯的處理相對復雜的模塊則采用C/S架構更適宜。實踐表明,合理實現業務的處理邏輯對提高系統的吞吐量、并發用戶數,進而提高系統的負載的性能具有顯著的優化效果。
(2)基于業務邏輯的實現方式采用的最優的數據訪問方式。盡可能減少對服務器的數據訪問。
2.3 軟件設計的優化
軟件設計的優化是優化環節最為復雜,較難實現的一個環節。對于不同架構、不同平臺的軟件系統其優化的方法和技術較多且各式各樣。以下列出一些可遵循的原則:
(1)采用操作系統、WEB服務器和數據庫服務器兼容性盡可能好的平臺。
(2)前臺方面:具體根據所采用開發平臺,對編程方法和實現的算法盡可能優化。比如,使用C#語言時:注意垃圾的回收、線程的同步、異常的處理等等。使用Javascript語言時:盡可能少地減少程序執行次數;盡可能使用系統提供的API來進行優化;盡量減小文件尺寸,去掉文件中無關的空行、空格、注釋和多余的代碼,有助于減小文件的尺寸,提高下載的時間;盡量不要在同一個Page內同時引用JavaScript和VBScript引擎;將Page內的JScript移入到單獨的JS文件中調用;將Page內的JavaScript放置在Page的最下面,有助于提高頁面的響應速度;利用cache,減少JavaScript文件的下載次數;在HTML內書寫JavaScript文件的URL時,注意統一大小寫,這樣可以利用前面URL緩存的文件等等。在Web應用中使用圖片時,衡量使用圖片的性價比,在不影響效果的前提下,盡可能減少圖片容量,適合的條件下,考慮使用矢量圖,避免使用位圖。
(3)后臺數據庫方面:優化表設計;使用存儲過程;盡可能優化查詢語句,使邏輯盡量簡單,提高執行效率;盡可能減少數據庫連接打開的時間,避免超出連接限制;盡可能減少阻塞和死鎖的發生等等。
3 結束語
系統性能的優化是較復雜的、系統性的問題,但又被用戶、系統管理員、系統開發人員和測試人員等眾多人員關注的問題,本文基于測試的角度,通過對系統性能的綜合分析,從總體給出了對系統性能的優化策略,以提高測試的各項性能指標。期望能對相關人員制定系統優化方案起到一定的幫助和指導作用。
參考文獻
[1]陳悅,白杰,王林.軟件項目開發的性能優化[J].微處理機,2009.3.
[2]段念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學出版社,2006.
[3]吳志文.應用軟件系統的系能測試策略方法探究[J].硅谷,2008.24.