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