壓力測(cè)試詳解

壓力測(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è)

壓力測(cè)試之JMeter.png

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)告

壓力測(cè)試之JMeter聚合報(bào)告.png
  • 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 密集型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容