什么是壓力測試,為什么要進(jìn)行壓力測試?Jmeter工具的使用

大家好,我是IT修真院北京分院的學(xué)員,一枚正直善良的JAVA程序員。

今天給大家分享一下,如何用jmeter做壓力測試

1.背景介紹:

什么是壓力測試?

Nginx(engine x) 是一個(gè)高性能的HTTP和反向代理服務(wù)器。

什么是jmeter?

Apache JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設(shè)計(jì)用于Web應(yīng)用測試,但后來擴(kuò)展到其他測試領(lǐng)域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對象、數(shù)據(jù)庫、FTP 服務(wù)器, 等等。JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。

2知識剖析

1.評估系統(tǒng)的能力

2.識別體系中的弱點(diǎn)

3.系統(tǒng)調(diào)優(yōu)

4.驗(yàn)證穩(wěn)定性,可靠性

3.常見問題

如何對web項(xiàng)目進(jìn)行簡單的壓力測試

4.解決方案:

使用jmeter

1、線程組:代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。實(shí)際的請求內(nèi)容在Sampler中定義,它被線程組包含??梢栽凇皽y試計(jì)劃->添加->線程組”來建立它,然后在線程組面板里有幾個(gè)輸入欄:線程數(shù)、Ramp-Up Period(in seconds)、循環(huán)次數(shù),其中Ramp-Up Period(in seconds)表示在這時(shí)間內(nèi)創(chuàng)建完所有的線程。如有8個(gè)線程,Ramp-Up = 200秒,那么線程的啟動時(shí)間間隔為200/8=25秒,這樣的好處是:一開始不會對服務(wù)器有太大的負(fù)載。線程組是為模擬并發(fā)負(fù)載而設(shè)計(jì)。

2、取樣器(Sampler):模擬各種請求。所有實(shí)際的測試任務(wù)都由取樣器承擔(dān),存在很多種請求。如:HTTP 、ftp請求等等。

3、監(jiān)聽器:負(fù)責(zé)收集測試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式。功能是對取樣器的請求結(jié)果顯示、統(tǒng)計(jì)一些數(shù)據(jù)(吞吐量、KB/S……)等。

4、斷言:用于來判斷請求響應(yīng)的結(jié)果是否如用戶所期望,是否正確。它可以用來隔離問題域,即在確保功能正確的前提下執(zhí)行壓力測試。這個(gè)限制對于有效的測試是非常有用的。

5、定時(shí)器:負(fù)責(zé)定義請求(線程)之間的延遲間隔,模擬對服務(wù)器的連續(xù)請求。

6、邏輯控制器:允許自定義JMeter發(fā)送請求的行為邏輯,它與Sampler結(jié)合使用可以模擬復(fù)雜的請求序列。

7、配置元件維護(hù)Sampler需要的配置信息,并根據(jù)實(shí)際的需要會修改請求的內(nèi)容。

8、前置處理器和后置處理器負(fù)責(zé)在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)。

聚合報(bào)告參數(shù)詳解

Label:每個(gè) JMeter 的 element(例如 HTTP Request)都有一個(gè) Name 屬性,這里顯示的就是 Name 屬性的值

#Samples:表示你這次測試中一共發(fā)出了多少個(gè)請求,如果模擬10個(gè)用戶,每個(gè)用戶迭代10次,那么這里顯示100

Average:平均響應(yīng)時(shí)間——默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,當(dāng)使用了 Transaction Controller 時(shí),也可以以Transaction 為單位顯示平均響應(yīng)時(shí)間

Median:中位數(shù),也就是 50% 用戶的響應(yīng)時(shí)間

90% Line:90% 用戶的響應(yīng)時(shí)間

Note:關(guān)于 50% 和 90% 并發(fā)用戶數(shù)的含義

Min:最小響應(yīng)時(shí)間

Max:最大響應(yīng)時(shí)間

Error%:本次測試中出現(xiàn)錯(cuò)誤的請求的數(shù)量/請求的總數(shù)

Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請求數(shù)(Request per Second),當(dāng)使用了 Transaction Controller 時(shí),也可以表示類似 LoadRunner 的 Transaction per Second 數(shù).

KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec

5.拓展思考

如何正確做web應(yīng)用的壓力測試

1) 首先說一下如何產(chǎn)生壓力,產(chǎn)生壓力的方法有很多,通??梢詫懩_本產(chǎn)生壓力機(jī)器人對服務(wù)器進(jìn)行發(fā)包和收包操作,也可以使用現(xiàn)有的工具(像jmeter、LoadRunner這些),所以說產(chǎn)生壓力其實(shí)并不難,難點(diǎn)在于產(chǎn)生的壓力是不是真實(shí)地反映了實(shí)際用戶的操作場景。舉個(gè)例子來說,對游戲來說單純的并發(fā)登陸場景在整個(gè)線上環(huán)境中的占比可能并不大(新開服等特殊情況除外),相反“登陸-開始戰(zhàn)斗-結(jié)束戰(zhàn)斗”、不同用戶執(zhí)行不同動作這種“混合模式”占了更大的比重。所以如何從實(shí)際環(huán)境中提煉出具體的場景比重,并且把這種比重轉(zhuǎn)化成實(shí)際壓力是一個(gè)重要的關(guān)注點(diǎn)。

(2) 產(chǎn)生壓力之后,通常我們可以拿到TPS、響應(yīng)時(shí)延等性能數(shù)據(jù),那么如何定位性能問題呢?TPS、響應(yīng)時(shí)延只能告訴你服務(wù)器是否存在問題,但不能幫助你定位問題。這些表面背后是整個(gè)后臺處理邏輯綜合作用的結(jié)果,這時(shí)候可以先關(guān)注系統(tǒng)的CPU、內(nèi)存、IO、網(wǎng)絡(luò),對比在tps、時(shí)延達(dá)到瓶頸時(shí)這些系統(tǒng)數(shù)據(jù)的情況,確定性能問題是系統(tǒng)哪一部分造成的,然后再回到代碼的邏輯中逐個(gè)優(yōu)化這些點(diǎn)。

(3) 當(dāng)服務(wù)器的整體性能就可以相對穩(wěn)定下來,這時(shí)候就需要對自己服務(wù)器的承載能力有一個(gè)預(yù)估,通過產(chǎn)生真實(shí)壓力、對比系統(tǒng)數(shù)據(jù),大致可以對單套系統(tǒng)的處理能力有個(gè)真實(shí)的評價(jià),然后結(jié)合業(yè)務(wù)規(guī)模配置服務(wù)器數(shù)量。可以看下騰訊wetest的這個(gè)壓測工具h(yuǎn)ttp://wetest.qq.com/gaps/

6.參考文獻(xiàn)

參考文獻(xiàn)

7.更多討論

一.為什么jmeter里的報(bào)告要叫聚合報(bào)告?

普通報(bào)告是每一個(gè)請求的記錄都寫出來? 聚合的就是算出平均值寫出來

二.TPS怎么測?

用一個(gè)插件測tps? http://blog.csdn.net/defonds/article/details/54576604

三.JMeter的線程發(fā)送HTTP請求時(shí),是連續(xù)不斷的發(fā)送請求,還是等上一個(gè)請求得到響應(yīng)之后,再發(fā)下一個(gè)請求?

是一個(gè)一個(gè)開始測的。

四.不同的線程數(shù)下,接口的反應(yīng)時(shí)間不同,如何選擇合適的線程數(shù)?

響應(yīng)時(shí)間在200MS之內(nèi)的時(shí)候90%Line的TPS是多少。這是系統(tǒng)支持并發(fā)數(shù)的含義。

五.QPS和TPS的區(qū)別?

TPS 即服務(wù)器每秒處理的事務(wù)數(shù).

QPS是每秒查詢率。

六.線程有上限嗎,有的話是多少,線程上限有什么決定?

看自己本地機(jī)器的性能。

七.壓力測試在整個(gè)開發(fā)的哪些過程進(jìn)行?

在demo之前。

八。發(fā)布線上要達(dá)到一個(gè)怎樣的標(biāo)準(zhǔn)?

不能出問題,響應(yīng)時(shí)間在200ms以內(nèi)


用jmeter進(jìn)行壓力測試_騰訊視頻




感謝大家觀看!

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

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

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

  • 在使用Jmeter進(jìn)行接口的性能測試時(shí),由于Jmeter 是JAVA應(yīng)用,對于CPU和內(nèi)存的消耗比較大,所以,當(dāng)需...
    燕京博士閱讀 4,304評論 0 16
  • 1. JMeter 測試計(jì)劃 測試計(jì)劃 使用JMeter進(jìn)行測試的起點(diǎn),是其它JMeter測試元件的容器。 線程組...
    alamZheng閱讀 3,553評論 0 7
  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK,配置JDK環(huán)境變量。Jmeter不需要安裝,下載后...
    茶小汐閱讀 3,126評論 0 8
  • 每個(gè)寒冷的夜晚 都有一個(gè)佇立在黑色里的人 看著漸漸亮起又熄滅的燈 慢慢跌入回憶的時(shí)空 午夜的沉靜帶著冰冷的風(fēng) 在裸...
    王不煩閱讀 405評論 0 0
  • 愛情是同一段位高手的交流 陳末和小容的最后告別,我看得很認(rèn)真。 “對你來講相愛就可以,對我來說適合最重要?!?“我...
    不彪悍的彪閱讀 604評論 1 1

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