一胁后、軟件性能測(cè)試目標(biāo)
軟件性能測(cè)試的目的主要有以下三點(diǎn):
1. 評(píng)價(jià)系統(tǒng)當(dāng)前性能,判斷系統(tǒng)是否滿足預(yù)期的性能需求疲陕。
2. 尋找軟件系統(tǒng)可能存在的性能問(wèn)題鞠值,定位性能瓶頸并解決問(wèn)題。
3. 判定軟件系統(tǒng)的性能表現(xiàn)竞膳,預(yù)見(jiàn)系統(tǒng)負(fù)載壓力航瞭,在應(yīng)用部署之前,評(píng)估系統(tǒng)性能坦辟。
而對(duì)于用戶來(lái)說(shuō)刊侯,則最關(guān)注的是當(dāng)前系統(tǒng):
1.是否滿足上線性能要求?
2.系統(tǒng)極限承載如何锉走?
3.系統(tǒng)穩(wěn)定性如何滨彻?
二、軟件性能測(cè)試中關(guān)鍵指標(biāo)
資源指標(biāo)
CPU使用率:指用戶進(jìn)程與系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比挪蹭,長(zhǎng)時(shí)間情況下亭饵,一般可接受上限不超過(guò)85%。
內(nèi)存利用率:內(nèi)存利用率=(1-空閑內(nèi)存/總內(nèi)存大小)*100%,一般至少有10%可用內(nèi)存派殷,內(nèi)存使用率可接受上限為85%淮逊。
磁盤I/O: 磁盤主要用于存取數(shù)據(jù),因此當(dāng)說(shuō)到IO操作的時(shí)候,就會(huì)存在兩種相對(duì)應(yīng)的操作,存數(shù)據(jù)的時(shí)候?qū)?yīng)的是寫IO操作,取數(shù)據(jù)的時(shí)候?qū)?yīng)的是是讀IO操作昔驱,一般使用% Disk Time(磁盤用于讀寫操作所占用的時(shí)間百分比)度量磁盤讀寫性能。
網(wǎng)絡(luò)帶寬:一般使用計(jì)數(shù)器Bytes Total/sec來(lái)度量上忍,Bytes Total/sec表示為發(fā)送和接收字節(jié)的速率骤肛,包括幀字符在內(nèi)纳本。判斷網(wǎng)絡(luò)連接速度是否是瓶頸,可以用該計(jì)數(shù)器的值和目前網(wǎng)絡(luò)的帶寬比較腋颠。
系統(tǒng)指標(biāo):
并發(fā)用戶數(shù):某一物理時(shí)刻同時(shí)向系統(tǒng)提交請(qǐng)求的用戶數(shù)饮醇。
在線用戶數(shù):某段時(shí)間內(nèi)訪問(wèn)系統(tǒng)的用戶數(shù),這些用戶并不一定同時(shí)向系統(tǒng)提交請(qǐng)求秕豫。
平均響應(yīng)時(shí)間:系統(tǒng)處理事務(wù)的響應(yīng)時(shí)間的平均值朴艰。事務(wù)的響應(yīng)時(shí)間是從客戶端提交訪問(wèn)請(qǐng)求到客戶端接收到服務(wù)器響應(yīng)所消耗的時(shí)間。對(duì)于系統(tǒng)快速響應(yīng)類頁(yè)面混移,一般響應(yīng)時(shí)間為3秒左右祠墅。
事務(wù)成功率:性能測(cè)試中,定義事務(wù)用于度量一個(gè)或者多個(gè)業(yè)務(wù)流程的性能指標(biāo)歌径,如用戶登錄毁嗦、保存訂單、提交訂單操作均可定義為事務(wù)回铛,如下圖所示:
單位時(shí)間內(nèi)系統(tǒng)可以成功完成多少個(gè)定義的事務(wù)狗准,在一定程度上反應(yīng)了系統(tǒng)的處理能力,一般以事務(wù)成功率來(lái)度量茵肃,計(jì)算公式如下所示:
超時(shí)錯(cuò)誤率:主要指事務(wù)由于超時(shí)或系統(tǒng)內(nèi)部其它錯(cuò)誤導(dǎo)致失敗占總事務(wù)的比率腔长。
三、性能問(wèn)題排查的過(guò)程
在性能測(cè)試過(guò)程中验残,如果出現(xiàn)性能問(wèn)題捞附,需要測(cè)試人員重點(diǎn)關(guān)注資源指標(biāo)和系統(tǒng)指標(biāo)或者應(yīng)用性能數(shù)據(jù),系統(tǒng)指標(biāo)是直接觀測(cè)到的測(cè)試數(shù)據(jù)您没,比如響應(yīng)時(shí)間過(guò)長(zhǎng)鸟召,事物請(qǐng)求成功率低,超時(shí)錯(cuò)誤率高等等氨鹏。當(dāng)系統(tǒng)指標(biāo)出現(xiàn)問(wèn)題時(shí)一般會(huì)表現(xiàn)在資源指標(biāo)上欧募,比如cpu高,內(nèi)存占用多仆抵,網(wǎng)絡(luò)寬帶占用高跟继,連接數(shù)多等。
當(dāng)觀測(cè)到系統(tǒng)資源異常時(shí)肢础,比如響應(yīng)時(shí)間長(zhǎng)还栓,事物成功率低,超時(shí)錯(cuò)誤率高等情況時(shí)传轰。應(yīng)該先查應(yīng)用相關(guān)信息,比如日志谷婆,應(yīng)用監(jiān)控慨蛙、數(shù)據(jù)庫(kù)等等信息辽聊,如果這些信息沒(méi)有問(wèn)題,再對(duì)資源信息進(jìn)行分析期贫。資源信息分析如下跟匆。
CPU問(wèn)題分析:一般情況下CPU滿負(fù)荷工作,有時(shí)候并不能判定為CPU出現(xiàn)瓶頸通砍,比如Linux總是試圖要CPU盡可能的繁忙玛臂,使得任務(wù)的吞吐量最大化,即CPU盡可能最大化使用封孙。因此迹冤,一般判斷CPU為瓶頸,主要從兩方面:一是CPU空閑持續(xù)為0虎忌,二是運(yùn)行隊(duì)列大于CPU核數(shù)(經(jīng)驗(yàn)值3-4倍)泡徙,即可判定存在瓶頸,對(duì)于CPU高消耗主要由什么引起的膜蠢,可能是應(yīng)用程序不合理造成堪藐,也可能是硬件資源不足,需要具體問(wèn)題具體分析挑围,比如問(wèn)題SQL語(yǔ)句引起礁竞,則需要跟蹤并優(yōu)化引起CPU使用過(guò)高的SQL語(yǔ)句。
內(nèi)存問(wèn)題分析:一般至少有10%可用內(nèi)存杉辙,內(nèi)存使用率可接受上限為85%苏章。當(dāng)空閑內(nèi)存變小時(shí),系統(tǒng)開(kāi)始頻繁地調(diào)動(dòng)磁盤頁(yè)面文件奏瞬,空閑內(nèi)存過(guò)小可能是內(nèi)存不足或內(nèi)存泄漏引起枫绅,需要根據(jù)系統(tǒng)實(shí)際情況監(jiān)控分析。
磁盤I/O問(wèn)題分析:磁盤I/O對(duì)于數(shù)據(jù)庫(kù)服務(wù)器硼端、文件服務(wù)器并淋、流媒體服務(wù)器系統(tǒng)來(lái)說(shuō),更容易成為瓶頸珍昨,一般從以下幾個(gè)方面對(duì)磁盤I/O進(jìn)行分析判斷:
每磁盤I/O數(shù)可用來(lái)與磁盤的I/O能力進(jìn)行對(duì)比县耽,如果經(jīng)過(guò)計(jì)算得到的每磁盤I/O數(shù)超過(guò)了磁盤標(biāo)稱的I/O能力,則說(shuō)明確實(shí)存在磁盤的性能瓶頸镣典。
監(jiān)控磁盤讀寫兔毙,如果磁盤長(zhǎng)時(shí)間進(jìn)行大數(shù)據(jù)量讀寫操作,且cpu等待超過(guò)20%兄春,則說(shuō)明磁盤I/O存在問(wèn)題澎剥,考慮提高磁盤I/O讀寫性能。
網(wǎng)絡(luò)帶寬問(wèn)題分析:判斷網(wǎng)絡(luò)帶寬是否是系統(tǒng)運(yùn)行性能瓶頸的首要條件是網(wǎng)絡(luò)帶寬是否會(huì)影響系統(tǒng)交易執(zhí)行性能赶舆。例如:減小網(wǎng)絡(luò)帶寬哑姚,并發(fā)用戶數(shù)祭饭、響應(yīng)時(shí)間與事務(wù)通過(guò)率等性能指標(biāo)是否不能接受;或者增加網(wǎng)絡(luò)帶寬叙量,并發(fā)用戶數(shù)倡蝙、響應(yīng)時(shí)間與事務(wù)通過(guò)率等性能指標(biāo)會(huì)得到明顯提高。
在實(shí)際性能測(cè)試中绞佩,如果發(fā)現(xiàn)始終報(bào)連接超時(shí)寺鸥,而實(shí)際手工訪問(wèn)可以正常訪問(wèn),可以通過(guò)ping應(yīng)用服務(wù)器IP或網(wǎng)關(guān)IP品山,如果出現(xiàn)網(wǎng)絡(luò)嚴(yán)重延遲或丟包胆建,則說(shuō)明網(wǎng)絡(luò)不穩(wěn)定,需要檢查網(wǎng)絡(luò)谆奥。
通過(guò)對(duì)資源指標(biāo)的分析眼坏,實(shí)際上各個(gè)方面都是互相依賴的,不能孤立的單從某個(gè)方面進(jìn)行排查酸些。當(dāng)一個(gè)方面出現(xiàn)性能問(wèn)題時(shí)宰译,往往會(huì)引發(fā)其他方面的性能問(wèn)題,例如魄懂,大量的磁盤讀寫勢(shì)必消耗CPU和IO資源沿侈,而內(nèi)存的不足會(huì)導(dǎo)致頻繁地進(jìn)行內(nèi)存頁(yè)寫入磁盤、磁盤寫到內(nèi)存的操作市栗,造成磁盤IO瓶頸缀拭,同時(shí),大量的網(wǎng)絡(luò)流量也會(huì)造成CPU過(guò)載填帽,所以蛛淋,在分析性能問(wèn)題時(shí),需要從各個(gè)方面進(jìn)行考慮篡腌。
軟件性能測(cè)試是執(zhí)行褐荷、監(jiān)控、分析嘹悼、調(diào)優(yōu)不斷進(jìn)行的過(guò)程叛甫,即監(jiān)控是為分析提供更多的參考數(shù)據(jù),分析是為了進(jìn)行調(diào)優(yōu)杨伙,調(diào)優(yōu)是解決當(dāng)前系統(tǒng)存在的性能瓶頸其监,為用戶提供更好、更快的客戶體驗(yàn)限匣。由于分析抖苦、調(diào)優(yōu)需要根據(jù)具體問(wèn)題進(jìn)行具體分析,本文未做過(guò)多說(shuō)明,只對(duì)通用的關(guān)鍵指標(biāo)進(jìn)行監(jiān)控分析睛约,建議在實(shí)際工作中可從資源指標(biāo)與系統(tǒng)指標(biāo)兩個(gè)方面鼎俘,層層檢測(cè)哲身、步步排查辩涝,性能問(wèn)題就無(wú)處藏身,一旦找到出現(xiàn)問(wèn)題的原因勘天,性能問(wèn)題也就迎刃而解怔揩!
說(shuō)明:本文部分內(nèi)容來(lái)源于網(wǎng)絡(luò)。
2019年連續(xù)五十一天修心 土司于北京