明確了具體的性能要求后,可以開始進行測試,確定應用程序是否滿足這些要求。性能測試假定應用程序穩定、可靠地運行。因此,在測試中消除盡可能多的變數很重要。例如,代碼中的錯誤可以導致出現性能問題,甚至掩蓋性能問題。要精確地比較不同性能測試的結果,應用程序必須正確地工作。如果調整過程修改了組件的實現,則重新測試應用程序的功能尤其重要。應用程序必須通過功能性測試后才可以測試性能。除了應用程序更改外,硬件、網絡通信量、軟件配置、系統服務等諸多方面也會發生意外的更改??刂茟贸绦蚋暮苤匾?。
測量性能
要正確地調整性能,必須準確完整地記錄每次測試的結果并進行維護。記錄應包括:
精確的系統配置,尤其是與前幾次測試的不同之處
原始數據和性能監視工具計算的結果
這些記錄不僅指示應用程序是否達到性能目標,而且有助于識別未來性能問題的潛在原因。
性能調整是與性能管理相關的主要活動。當性能降到最基本的水平時,性能調整由查找和消除瓶頸組成,瓶頸是在服務器中的某個硬件或軟件接近其容量限制時發生和顯示出來的情況。
在開始性能調整循環之前,必須做一些準備工作,為正在進行的性能調整活動建立框架。您應該:
識別約束 - 站點的業務實例確定優先級,而優先級又設立邊界。約束(如可維護性和預算限制)在尋求更高的性能方面是不可改變的因素。必須將尋求性能提高的努力集中在不受約束的因素上。
指定負載 - 這涉及確定站點的客戶端需要哪些服務,以及對這些服務的需求程度。用于指定負載的最常用度量標準是客戶端數目、客戶端思考時間以及負載分布狀況;其中客戶端思考時間是指客戶端接收到答復到后面提交新請求之間的時間量,負載分布狀況包括穩定或波動負載、平均負載和峰值負載。
設置性能目標 - 性能目標必須明確,包括識別用于調整的度量標準及其對應的基準值??偟南到y吞吐量和響應時間是用于測量性能的兩個常用度量標準。識別性能度量標準后,必須為每個度量標準建立可計量的基準值與合理的基準值。
注意 由于性能和容量的關系如此密切,因此您識別的約束、負載和目標也適用于容量規劃。
建立了性能調整的邊界和期望值后,可以開始調整循環,這是一系列重復的受控性能試驗。
調整循環
重復以下所示的四個調整循環階段,直到獲得在開始調整過程前建立的性能目標。
調整循環
收集
收集階段是任何調整操作的起點。在此階段,只是使用為系統特定部分選擇的性能計數器集合來收集數據。這些計數器可用于網絡、服務器或后端數據庫。
不論調整的是系統的哪一部分,都需要根據基準測量來比較性能改變。需要建立系統空閑以及系統執行特定任務時的系統行為模式。因此,可以使用第一遍數據收集來建立系統行為值的基準集?;鶞式⒃谙到y的行為令人滿意時應該看到的典型計數器值。
注意 基準性能是一個主觀的標準:必須設置適合于工作環境且能最好地反映系統工作負荷和服務需求的基準。
分析
收集了調整選定系統部分所需的性能數據后,需要對這些數據進行分析以確定瓶頸。記住,性能數字僅具有指示性,它并不一定就可以確定實際的瓶頸在哪里,因為一個性能問題可能由多個原因所致。某個系統組件的問題是由另一系統組件的問題導致的,這種情況也很普遍。內存不足是這種情況的最好示例,它表現為磁盤和處理器使用的增加。
以下幾點來自“Microsoft Windows 2000 資源工具包”,提供了解釋計數器值和消除可能導致設置不適當的調整目標值的錯誤數據或誤導數據的指南。
監視名稱相同的進程 — 監視某個實例而沒有監視另一個實例的異乎尋常大的值。有時,系統監視器將多個實例的組合值報告為單個實例的值,這就錯誤地報告了同名進程的不同實例的數據??赏ㄟ^按進程標識符對進程進行跟蹤來解決此問題。
監視多個線程 - 當監視多個線程而其中一個線程停止時,一個線程的數據可能似乎被報告成了另一個線程的數據。這是由于線程的編號方式所導致的??赏ㄟ^將進程線程的線程標識符包含在日志或顯示中來解決此問題。為此,請使用“線程/線程 ID”計數器。
原文轉自:http://www.uml.org.cn/Test/200512261.htm