app開(kāi)發(fā)公司認(rèn)可湖南嵐鴻推 薦整站優(yōu)化
一、什么是性能測(cè)試
先看下百度百科對(duì)它的定義,性能測(cè)試是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。
我們可以認(rèn)為性能測(cè)試是:通過(guò)在測(cè)試環(huán)境下對(duì)系統(tǒng)或構(gòu)件的性能進(jìn)行探測(cè),用以驗(yàn)證在生產(chǎn)環(huán)境下系統(tǒng)性能是否達(dá)
到預(yù)估的性能需求,發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸,進(jìn)而改善優(yōu)化并系統(tǒng)的性能,提高系統(tǒng)的可擴(kuò)展性、穩(wěn)定性。
學(xué)習(xí)性能測(cè)試,或者對(duì)測(cè)試結(jié)果進(jìn)行分析,都需要熟悉測(cè)試指標(biāo)。接下來(lái)從性能測(cè)試分析度量的角度,介紹性能測(cè)試
不同維度的測(cè)試指標(biāo)。
二、系統(tǒng)性能指標(biāo)
2.1 響應(yīng)時(shí)間
響應(yīng)時(shí)間(Response Time),簡(jiǎn)稱RT,是指用戶從客戶端發(fā)起一個(gè)請(qǐng)求開(kāi)始,到客戶端接收到從服務(wù)器端返回的結(jié)果,
整個(gè)過(guò)程所耗費(fèi)的時(shí)間。不包括前端頁(yè)面的處理和渲染時(shí)間。直觀上看,這個(gè)指標(biāo)與人對(duì)軟件性能的主觀感受是非常一致
的,因?yàn)樗暾赜涗浟苏麄€(gè)計(jì)算機(jī)系統(tǒng)處理請(qǐng)求的時(shí)間。響應(yīng)時(shí)間的絕對(duì)值并不能直接反映軟件的性能的高低,軟件性
能的高低實(shí)際上取決于用戶對(duì)該響應(yīng)時(shí)間的接受程度。
2.2 系統(tǒng)處理能力
指系統(tǒng)在利用系統(tǒng)硬件平臺(tái)和軟件平臺(tái)進(jìn)行信息處理的能力,系統(tǒng)處理能力通過(guò)系統(tǒng)每秒鐘能夠處理的交易數(shù)量來(lái)評(píng)
價(jià),交易有兩種理解:
(1)從業(yè)務(wù)人員角度進(jìn)行的一筆業(yè)務(wù)過(guò)程;
(2)從系統(tǒng)角度的一次交易申請(qǐng)和響應(yīng)過(guò)程。
前者稱為業(yè)務(wù)交易過(guò)程,后者稱為事務(wù),兩種交易指標(biāo)都可以評(píng)價(jià)應(yīng)用系統(tǒng)的處理能力。一般情況下,系統(tǒng)處理能力用以
下幾個(gè)指標(biāo)來(lái)度量:
HPS(Hits Per Second):每秒點(diǎn)擊次數(shù),單位是次/秒
TPS(Transaction per Second):系統(tǒng)每秒處理交易數(shù),單位是筆/秒
QPS(Query per Second):系統(tǒng)每秒處理查詢次數(shù),單位是次/秒
對(duì)于互聯(lián)網(wǎng)業(yè)務(wù)中,如果某些業(yè)務(wù)有且僅有一個(gè)請(qǐng)求連接,那么TPS=QPS=HPS,一般情況下用TPS來(lái)衡量整個(gè)業(yè)務(wù)
流程,用QPS來(lái)衡量接口查詢次數(shù),用HPS來(lái)表示對(duì)服務(wù)器點(diǎn)擊請(qǐng)求。
2.3 吞吐量
指系統(tǒng)在單位時(shí)間內(nèi)處理請(qǐng)求的數(shù)量。對(duì)于單用戶的系統(tǒng),響應(yīng)時(shí)間可以很好地度量系統(tǒng)的性能;而對(duì)于并發(fā)系統(tǒng),
通常需要用吞吐量作為性能指標(biāo)。一般而言,吞吐量是一個(gè)比較通用的指標(biāo),兩個(gè)具有不同用戶數(shù)和用戶使用模式的系統(tǒng),
如果其最大吞吐量基本一致,則可以判斷兩個(gè)系統(tǒng)的處理能力基本一致。
2.4 并發(fā)用戶數(shù)
指在同一時(shí)刻內(nèi),登錄系統(tǒng)并進(jìn)行業(yè)務(wù)操作的用戶數(shù)量。對(duì)于長(zhǎng)連接系統(tǒng)來(lái)說(shuō)最大并發(fā)用戶數(shù)即是系統(tǒng)的并發(fā)接入能力,
而對(duì)于短連接系統(tǒng)而言最大并發(fā)用戶數(shù)并不等于系統(tǒng)的并發(fā)接入能力短連接系統(tǒng)的并發(fā)用戶數(shù)與系統(tǒng)架構(gòu)、系統(tǒng)處理能力等
各種情況相關(guān)。
與吞吐量相比,并發(fā)用戶數(shù)是一個(gè)更直觀但也更籠統(tǒng)的性能指標(biāo)。實(shí)際上,并發(fā)用戶數(shù)是一個(gè)非常不準(zhǔn)確的指標(biāo),因?yàn)?/p>
用戶不同的使用模式會(huì)導(dǎo)致不同用戶在單位時(shí)間發(fā)出不同數(shù)量的請(qǐng)求。
2.5 錯(cuò)誤率
錯(cuò)誤率(Error Rate),是指在一定時(shí)間內(nèi)處理請(qǐng)求時(shí)發(fā)生的錯(cuò)誤或失敗的次數(shù)與總請(qǐng)求數(shù)量之比。錯(cuò)誤率通常以百分比形
式表示,例如:99%的成功率或1%的失敗率等。這個(gè)指標(biāo)越低代表系統(tǒng)性能越好。
三、資源性能指標(biāo)
3.1 CPU
CPU又稱為中央處理器,是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心(Control Unit),功能主
要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。
CPU指標(biāo)主要指的CPU利用率,包括:用戶態(tài)(user)、系統(tǒng)態(tài)(sys)、等待態(tài)(wait)、空閑態(tài)(idle)。性能測(cè)試CPU的評(píng)估建
議值:
(1)CPU利用率要低于業(yè)界警戒值范圍之內(nèi),即小于或者等于75%
(2)CPU sys%小于或者等于30%
(3)CPU wait%小于或者等于5%
3.2 內(nèi)存
內(nèi)存是與CPU進(jìn)行溝通的橋梁,計(jì)算機(jī)中所有程序的運(yùn)行都是在內(nèi)存中進(jìn)行的,因此內(nèi)存的性能對(duì)計(jì)算機(jī)的影響非常大。
現(xiàn)在的操作系統(tǒng)為了最大利用內(nèi)存,在內(nèi)存中存放了緩存,因此內(nèi)存利用率100%并不代表內(nèi)存有瓶頸。衡量系統(tǒng)內(nèi)存是否
有瓶頸主要靠SWAP(與虛擬內(nèi)存交換)交換空間利用率,一般情況下,SWAP交換空間利用率要低于70%,太多的交換將會(huì)
引起系統(tǒng)性能低下。
3.3 磁盤(pán)吞吐量
磁盤(pán)吞吐量簡(jiǎn)稱為Disk Throughput,是指在無(wú)磁盤(pán)故障的情況下單位時(shí)間內(nèi)通過(guò)磁盤(pán)的數(shù)據(jù)量。分析指標(biāo)主要有每秒
讀寫(xiě)多少兆、磁盤(pán)繁忙率、磁盤(pán)隊(duì)列數(shù)、平均服務(wù)時(shí)間、平均等待時(shí)間、空間利用率等等。其中磁盤(pán)繁忙率是直接反映磁
盤(pán)是否有瓶頸的的重要依據(jù),一般情況下,磁盤(pán)繁忙率要低于70%。
3.4 網(wǎng)絡(luò)吞吐量
網(wǎng)絡(luò)吞吐量簡(jiǎn)稱為Network Throughput,是指在無(wú)網(wǎng)絡(luò)故障的情況下單位時(shí)間內(nèi)通過(guò)的網(wǎng)絡(luò)的數(shù)據(jù)數(shù)量,單位為Byte/s。
網(wǎng)絡(luò)吞吐量指標(biāo)用于衡量系統(tǒng)對(duì)于網(wǎng)絡(luò)設(shè)備或鏈路傳輸能力的需求。當(dāng)網(wǎng)絡(luò)吞吐量指標(biāo)接近網(wǎng)絡(luò)設(shè)備或鏈路最大傳輸能力時(shí),
則需要考慮升級(jí)網(wǎng)絡(luò)設(shè)備。網(wǎng)絡(luò)吞吐量指標(biāo)主要有每秒有多少兆流量進(jìn)出,一般情況下不能超過(guò)設(shè)備或鏈路最大傳輸能力的70%。
四、中間件指標(biāo)
常用的中間件例如Tomcat、Weblogic等指標(biāo)主要包括JVM、ThreadPool和JDBC,具體如下:
一級(jí)指標(biāo) | 二級(jí)指標(biāo) | 單位 | 釋義 |
GC | GC頻率 | 每秒多少次 | java虛擬機(jī)垃圾部分回收頻率 |
GC | Full GC頻率 | 每小時(shí)多少次 | java虛擬機(jī)垃圾完全回收頻率 |
GC | Full GC平均時(shí)長(zhǎng) | 秒 | 用于垃圾完全回收的平均時(shí)長(zhǎng) |
GC | Full GC最大時(shí)長(zhǎng) | 秒 | 用于垃圾完全回收的最大時(shí)長(zhǎng) |
GC | 堆使用率 | 百分比 | 堆使用率 |
ThreadPool | Active Thread Count | 個(gè) | 活動(dòng)的線程數(shù) |
ThreadPool | Pending User Request | 個(gè) | 處于排隊(duì)的用戶請(qǐng)求個(gè)數(shù) |
JDBC | JDBC Active Connection | 個(gè) | JDBC活動(dòng)連接數(shù) |
各項(xiàng)指標(biāo)參考標(biāo)準(zhǔn):
(1)當(dāng)前正在運(yùn)行的線程數(shù)不能超過(guò)設(shè)定的最大值
系統(tǒng)性能較好的情況下,線程數(shù)最小值設(shè)置50和最大值設(shè)置200比較合適。
(2)當(dāng)前運(yùn)行的JDBC連接數(shù)不能超過(guò)設(shè)定的最大值
系統(tǒng)性能較好的情況下,JDBC最小值設(shè)置50和最大值設(shè)置200比較合適。
(3)GC頻率不能頻繁,特別是FULL GC更不能頻繁?
系統(tǒng)性能較好的情況下,JVM最小堆大小和最大堆大小分別設(shè)置1024M比較合適。
五、數(shù)據(jù)庫(kù)指標(biāo)
常用的數(shù)據(jù)庫(kù)指標(biāo)主要包括SQL、吞吐量、緩存命中率、連接數(shù)等等,具體如下:
一級(jí)指標(biāo) | 二級(jí)指標(biāo) | 單位 | 釋義 |
SQL | 耗時(shí) | 微秒 | 執(zhí)行SQL耗時(shí) |
吞吐量 | QPS | 個(gè) | 每秒查詢次數(shù) |
吞吐量 | 每秒查詢次數(shù) | 個(gè) | 每秒事務(wù)次數(shù) |
命中率 | Key Buffer命中率 | 百分比 | 索引緩沖區(qū)命中率 |
命中率 | InnoDB Buffer命中率 | 百分比 | InnoDB緩沖區(qū)命中率 |
命中率 | Query Cache命中率 | 百分比 | 查詢緩存命中率 |
命中率 | Table Cache命中率 | 百分比 | 表緩存命中率數(shù) |
命中率 | Thread Cache命中率 | 百分比 | 線程緩存命中率 |
鎖 | 等待次數(shù) | 次 | 鎖等待次數(shù) |
鎖 | 等待時(shí)間 | 微秒 | 鎖等待時(shí)間 |
參考標(biāo)準(zhǔn):
(1)SQL耗時(shí)越小越好,一般情況下微秒級(jí)別;
(2)命中率越高越好,一般情況下不能低于95%;
(3)鎖等待次數(shù)越低越好,等待時(shí)間越短越好。
六、穩(wěn)定性指標(biāo)
這里的穩(wěn)定性是指最短穩(wěn)定時(shí)間,即系統(tǒng)按照最大容量的80%或標(biāo)準(zhǔn)壓力(系統(tǒng)的預(yù)期日常壓力)情況下運(yùn)行,能夠
穩(wěn)定運(yùn)行的最短時(shí)間。
一般來(lái)說(shuō),對(duì)于正常工作日(8小時(shí))運(yùn)行的系統(tǒng),至少應(yīng)該能保證系統(tǒng)穩(wěn)定運(yùn)行8小時(shí)以上;對(duì)于7*24運(yùn)行的系統(tǒng),
至少應(yīng)該能夠保證系統(tǒng)穩(wěn)定運(yùn)行24小時(shí)以上。如果系統(tǒng)不能穩(wěn)定的運(yùn)行,上線后,隨著業(yè)務(wù)量的增長(zhǎng)和長(zhǎng)時(shí)間運(yùn)行,將
會(huì)出現(xiàn)性能下降甚至崩潰的風(fēng)險(xiǎn)。
參考標(biāo)準(zhǔn):
(1)TPS曲線穩(wěn)定,沒(méi)有大幅度的波動(dòng);
(2)各項(xiàng)資源指標(biāo)沒(méi)有泄露或異常情況。
今天的分享就到此結(jié)束了,大家還有什么不懂的可以評(píng)論區(qū)下留言哈,如果我的文章對(duì)你有所幫助的話,可以點(diǎn)贊三聯(lián)支持一下