1.解決性能問題需要注意以下幾個問題:
1)確定需求;2)確保系統的健壯性;3)制定意外的處理方式。
2.性能測試
2.1 衡量軟件的性能需要考慮以下三點:
1)時間特性 --------在規定條件下,軟件執行其功能時提供適當的響應和處理時間以及吞吐率的能力。
2)資源利用性-------在規定的條件下,軟件執行其功能時使用合適數量和類別的資源的能力。
3)效率依從性-------軟件產品遵循與效率相關的標準或約定的能力。
2.2 性能測試的分類
★負載測試-----強調的是在一定的環境下,系統能夠達到的峰值指標。此測試關心how much和how fast。多數的性能測試指負載測試。
★壓力測試-----強調的是極端情況下系統的穩定性,處理能力可不考慮。
★容量測試----不僅可以對數據庫進行,還可以對硬件處理能力、各種服務器的等進行,以此來測試系統在不同的容量級別下是否能達到指定的性能。此測試關心how much。
? ? ? ?容量測試中有 可伸縮性一說,主要從硬件與軟件兩個方面考慮。其具體的測試過程包括:進行負載測試,記錄不同負載下平均響應時間,然后查看平均響應時間是否線性增加,如線性增加,則說明系統具有可伸縮性,否則說明可伸縮性較差或無。
★配置測試-----不同的配置,系統存在不同的性能變化。
★基準測試------通過基準測試得到基線數據。一般基于配置測試,通過配置測試得到數據,以此調優性能。
★并發測試------通過模擬多個用戶并發訪問一個應用、存儲過程或數據記錄及其他并發操作,來測試是否存在死鎖、數據錯誤等故障。最好分模塊并發測試。
★可靠性測試-----系統在一定的業務壓力,讓系統持續運行一段時間,雞窩系統是否達到要求的穩定性,此處強調在一定的業務壓力下持續運行的能力。
★失效恢復測試-----重在關注系統出現問題后能否根據預先制定的策略恢復,且恢復后能否正常運行。要關注問題影響的范圍是否可承受。
★現網性能測試-------實際網絡與環境中,真實測試數據進行測試。注意點:時間段的選擇,垃圾數據處理,網絡限制。
2.3性能測試進行的時間
①編碼階段執行壓力與并發
②編碼-測試之間執行容量測試
③測試階段執行(負載/配置/基準)
3性能指標
監控性能的指標包括以下3點:
響應時間
┝┝┝┝反映完成某個業務所需要的時間。事務是指做某件事情的操作,在性能測試中通過事務函數來完成對各應時間的統計,事務函數記錄開始做事和做完之間的時間差,簡稱事務響應時間(TRT)
吞吐量
┝┝┝┝反映單位時間內能夠處理的事務數目,簡稱TPS。其計算公式:
? ? ? ? ?TPS=(N*R)/T
N=虛擬用戶數,R=在T時間內每個虛擬用戶的請求字節數,T=性能測試所用時間
服務器資源占用
┝┝┝┝反映在負載下系統的資源利用率
名稱理解:
系統實際用戶------可能會有很多用戶使用同一個系統,但并不是所有的用戶都會同時使用該系統,所以系統的實際用戶是一個容量的問題,而不是負載的問題。
系統在線用戶------當系統用戶對系統進行操作時我們認為該用戶為在線用戶,,這些用戶對系統形成了負載,在線用戶與實際用戶的的比例是根據系統的特殊決定的。
并發操作------在線用戶會對系統產生負載,但用戶和用戶之間的操作卻不是并發的,因為首先用戶的操作需要延時等待,其次每個用戶的操作并不完全相同。并發操作會對系統產生很大的負載,當多人用戶同時對某個功能進行操作時,服務器必須對這些請求進行隊列管理,依次處理。還一種并發是在線用戶同一時間做同一種操作,主要是驗證程序或數據庫發的處理能力。
并發用戶數≠每秒請求數
對于一具VUser來說,每秒發出的多少請求跟服務器返回各應的速度有關。如果VUserd 0.5秒內就收到了響應,那它會立即發現第二個請求;而如果要一直等待3秒才能得到響應,它將會一直等到收到響應后才發出第二個請求。也就是說,并發用戶數的設置只是保證服務器在任一時刻都有相應數量的請求需要處理,而并不一定是保證每秒中發送相應數量的請求給服務器。
所以,只有當響應時間恰好是1秒時,并發用戶數才會等于每秒請求數;否則,每秒請求數可能大于并發用戶數或小于并發用戶數。