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