壓力測試
壓力測試考察當(dāng)前軟硬件環(huán)境下系統(tǒng)所能承受的最大負(fù)荷并幫助找出系統(tǒng)瓶頸所在。壓測都 是為了系統(tǒng)在線上的處理能力和穩(wěn)定性維持在一個(gè)標(biāo)準(zhǔn)范圍內(nèi)父阻,做到心中有數(shù)愈涩。
使用壓力測試,我們有希望找到很多種用其他測試方法更難發(fā)現(xiàn)的錯(cuò)誤加矛。有兩種錯(cuò)誤類型是: 內(nèi)存泄漏履婉,并發(fā)與同步。
有效的壓力測試系統(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)求開始已烤,到客戶端接收到從服務(wù)器端返回的響應(yīng)結(jié)束,整個(gè)過程所耗費(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 來衡量整個(gè)業(yè)務(wù)流程星持,用 QPS 來衡量接口查詢次數(shù),用 HPS 來表 示對(duì)服務(wù)器單擊請(qǐng)求弹灭。
-
無論 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í)間。
-
從外部看乍迄,性能測試主要關(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壓測
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í)長:設(shè)置的虛擬用戶數(shù)需要多長時(shí)間全部啟動(dòng)。如果線程數(shù)為 10逊躁,準(zhǔn)備時(shí)長為 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)的開始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí)转培,需要勾選循環(huán)次數(shù)為永遠(yuǎn))
持續(xù)時(shí)間(秒):測試持續(xù)時(shí)間恶导,會(huì)覆蓋結(jié)束時(shí)間
啟動(dòng)延遲(秒):測試延遲啟動(dòng)時(shí)間勉失,會(huì)覆蓋啟動(dòng)時(shí)間
聚合報(bào)告
Label:請(qǐng)求名稱艾栋,自己定義的
Sample:這次測試中一共發(fā)出了多少個(gè)請(qǐng)求,如果模擬20個(gè)用戶,每個(gè)用戶迭代20次全蝶,那么就是400(未設(shè)置持續(xù)運(yùn)行時(shí)間)螟蝙,如果設(shè)置了持續(xù)運(yùn)行時(shí)間葡秒,運(yùn)行時(shí)間越長斯入,這個(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í)間晕换,未超過這個(gè)值
Min:最小響應(yīng)時(shí)間
Maximum:最大響應(yīng)時(shí)間
Error %:本次測試中出現(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ù)恕汇,則可以慢慢的往上面增加腕唧;若在壓測的機(jī) 器性能很好的情況下,出現(xiàn)吞吐量小于并發(fā)數(shù)瘾英,說明并發(fā)數(shù)不能再增加了枣接,可以慢慢的 往下減,找到最佳的并發(fā)數(shù)缺谴;
壓測結(jié)束但惶,登陸相應(yīng)的 web 服務(wù)器查看 CPU 等性能指標(biāo),進(jìn)行數(shù)據(jù)的分析;
最大的 tps湿蛔,不斷的增加并發(fā)數(shù)膀曾,加到 tps 達(dá)到一定值開始出現(xiàn)下降,那么那個(gè)值就是 最大的 tps阳啥。
最大的并發(fā)數(shù):最大的并發(fā)數(shù)和最大的 tps 是不同的概率添谊,一般不斷增加并發(fā)數(shù),達(dá)到 一個(gè)值后察迟,服務(wù)器出現(xiàn)請(qǐng)求超時(shí)斩狱,則可認(rèn)為該值為最大的并發(fā)數(shù)。
壓測過程出現(xiàn)性能瓶頸扎瓶,若壓力機(jī)任務(wù)管理器查看到的 cpu所踊、網(wǎng)絡(luò)和 cpu 都正常,未達(dá) 到 90%以上概荷,則可以說明服務(wù)器有問題秕岛,壓力機(jī)沒有問題。
-
影響性能考慮點(diǎn)包括:
數(shù)據(jù)庫
應(yīng)用程序
中間件(tomcat、nginx)
網(wǎng)絡(luò)和操作系統(tǒng)等方面
首先考慮自己的應(yīng)用屬于 CPU 密集型還是 IO 密集型