壓力測(cè)試
壓力測(cè)試考察當(dāng)前軟硬件環(huán)境下系統(tǒng)所能承受的最大負(fù)荷并幫助找出系統(tǒng)瓶頸所在。壓測(cè)都 是為了系統(tǒng)在線上的處理能力和穩(wěn)定性維持在一個(gè)標(biāo)準(zhǔn)范圍內(nèi),做到心中有數(shù)。
使用壓力測(cè)試,我們有希望找到很多種用其他測(cè)試方法更難發(fā)現(xiàn)的錯(cuò)誤。有兩種錯(cuò)誤類型是: 內(nèi)存泄漏,并發(fā)與同步。
有效的壓力測(cè)試系統(tǒng)將應(yīng)用一下這些關(guān)鍵條件:重復(fù)、并發(fā)、量級(jí)、隨機(jī)變化。
性能指標(biāo)
-
響應(yīng)時(shí)間(Response Time: RT)
相應(yīng)時(shí)間是指用戶從客戶端發(fā)起一個(gè)請(qǐng)求開(kāi)始,到客戶端接收到從服務(wù)器端返回的響應(yīng)結(jié)束,整個(gè)過(guò)程所耗費(fèi)的時(shí)間。
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ù)器單擊請(qǐng)求。
-
無(wú)論 TPS、QPS、HPS,此指標(biāo)是衡量系統(tǒng)處理能力非常重要的指標(biāo),越大越好,根據(jù)經(jīng) 驗(yàn),一般情況下:
金融行業(yè):1000TPS~50000TPS,不包括互聯(lián)網(wǎng)化的活動(dòng)
保險(xiǎn)行業(yè):100TPS~100000TPS,不包括互聯(lián)網(wǎng)化的活動(dòng)
制造行業(yè):10TPS~5000TPS
互聯(lián)網(wǎng)電子商務(wù):10000TPS~1000000TPS
互聯(lián)網(wǎng)中型網(wǎng)站:1000TPS~50000TPS
互聯(lián)網(wǎng)小型網(wǎng)站:500TPS~10000TPS
最大響應(yīng)時(shí)間(Max Response Time) 指用戶發(fā)出請(qǐng)求或者指令到系統(tǒng)做出反應(yīng)(響應(yīng)) 的最大時(shí)間。
最少響應(yīng)時(shí)間(Mininum ResponseTime) 指用戶發(fā)出請(qǐng)求或者指令到系統(tǒng)做出反應(yīng)(響 應(yīng))的最少時(shí)間。
90%響應(yīng)時(shí)間(90% Response Time) 是指所有用戶的響應(yīng)時(shí)間進(jìn)行排序,第 90%的響應(yīng)時(shí)間。
-
從外部看,性能測(cè)試主要關(guān)注如下三個(gè)指標(biāo)
吞吐量:每秒鐘系統(tǒng)能夠處理的請(qǐng)求數(shù)、任務(wù)數(shù)。
響應(yīng)時(shí)間:服務(wù)處理一個(gè)請(qǐng)求或一個(gè)任務(wù)的耗時(shí)。
錯(cuò)誤率:一批請(qǐng)求中結(jié)果出錯(cuò)的請(qǐng)求所占比例。
JMeter壓測(cè)

JMeter上 ThreadGroup 中線程組參數(shù)詳解
Number of Threads(users)線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多少虛擬用戶數(shù)在這里 也就是設(shè)置多少個(gè)線程數(shù)。
Ramp-up period(seconds)準(zhǔn)備時(shí)長(zhǎng):設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線程數(shù)為 10,準(zhǔn)備時(shí)長(zhǎng)為 2,那么需要 2 秒鐘啟動(dòng) 10 個(gè)線程,也就是每秒鐘啟動(dòng) 5 個(gè)線程。
Loop Count 循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為 10,循環(huán)次數(shù)為 100,那么每個(gè)線 程發(fā)送 100 次請(qǐng)求??傉?qǐng)求數(shù)為 10*100=1000 。如果勾選了“infinite 永遠(yuǎn)”,那么所有線程會(huì) 一直發(fā)送請(qǐng)求,一到選擇停止運(yùn)行腳本。
Delay Thread creation until needed:直到需要時(shí)延遲線程的創(chuàng)建。
調(diào)度器:設(shè)置線程組啟動(dòng)的開(kāi)始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn))
持續(xù)時(shí)間(秒):測(cè)試持續(xù)時(shí)間,會(huì)覆蓋結(jié)束時(shí)間
啟動(dòng)延遲(秒):測(cè)試延遲啟動(dòng)時(shí)間,會(huì)覆蓋啟動(dòng)時(shí)間
聚合報(bào)告

Label:請(qǐng)求名稱,自己定義的
Sample:這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求,如果模擬20個(gè)用戶,每個(gè)用戶迭代20次,那么就是400(未設(shè)置持續(xù)運(yùn)行時(shí)間),如果設(shè)置了持續(xù)運(yùn)行時(shí)間,運(yùn)行時(shí)間越長(zhǎng),這個(gè)數(shù)值就越大
Average:平均響應(yīng)時(shí)間,單位ms——默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,當(dāng)使用了 Transaction Controller 時(shí),也可以以Transaction 為單位顯示平均響應(yīng)時(shí)間
Median:中位數(shù)的響應(yīng)時(shí)間,也就是 50% 用戶的響應(yīng)時(shí)間
90% 95% 99% Line:90% 95% 99% 用戶的響應(yīng)時(shí)間,未超過(guò)這個(gè)值
Min:最小響應(yīng)時(shí)間
Maximum:最大響應(yīng)時(shí)間
Error %:本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量/請(qǐng)求的總數(shù)
Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second),當(dāng)使用了 Transaction Controller 時(shí),也可以表示類似 LoadRunner 的 Transaction per Second 數(shù)
Received KB/sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec
Sent KB/sec:每秒發(fā)送的數(shù)據(jù)量
結(jié)果分析
有錯(cuò)誤率需要確認(rèn),確定是否允許錯(cuò)誤的發(fā)生或者錯(cuò)誤率允許在多大的范圍內(nèi);
Throughput 吞吐量每秒請(qǐng)求的數(shù)大于并發(fā)數(shù),則可以慢慢的往上面增加;若在壓測(cè)的機(jī) 器性能很好的情況下,出現(xiàn)吞吐量小于并發(fā)數(shù),說(shuō)明并發(fā)數(shù)不能再增加了,可以慢慢的 往下減,找到最佳的并發(fā)數(shù);
壓測(cè)結(jié)束,登陸相應(yīng)的 web 服務(wù)器查看 CPU 等性能指標(biāo),進(jìn)行數(shù)據(jù)的分析;
最大的 tps,不斷的增加并發(fā)數(shù),加到 tps 達(dá)到一定值開(kāi)始出現(xiàn)下降,那么那個(gè)值就是 最大的 tps。
最大的并發(fā)數(shù):最大的并發(fā)數(shù)和最大的 tps 是不同的概率,一般不斷增加并發(fā)數(shù),達(dá)到 一個(gè)值后,服務(wù)器出現(xiàn)請(qǐng)求超時(shí),則可認(rèn)為該值為最大的并發(fā)數(shù)。
壓測(cè)過(guò)程出現(xiàn)性能瓶頸,若壓力機(jī)任務(wù)管理器查看到的 cpu、網(wǎng)絡(luò)和 cpu 都正常,未達(dá) 到 90%以上,則可以說(shuō)明服務(wù)器有問(wèn)題,壓力機(jī)沒(méi)有問(wèn)題。
-
影響性能考慮點(diǎn)包括:
數(shù)據(jù)庫(kù)
應(yīng)用程序
中間件(tomcat、nginx)
網(wǎng)絡(luò)和操作系統(tǒng)等方面
首先考慮自己的應(yīng)用屬于 CPU 密集型還是 IO 密集型