1. 程式人生 > >jmeter 壓力測試

jmeter 壓力測試

char 執行 服務器 pop txt orm 錯誤 顯示 時長

轉自: https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327

Jmeter壓力測試簡單教程(包括服務器狀態監控)

2017年09月18日 20:26:08 閱讀數:22427

前段時間公司需要對服務器進行壓力測試,包括登錄前的頁面和登錄後的頁面,主要目的是測試負載均衡的實現效果。不知道是不是因為Jmeter不如loadRunner火爆還是什麽,網上關於Jmeter的資料有很多但是大多千篇一律,要麽簡單弄個頁面測試一下,要麽全篇都是介紹很多和Jmeter無關的第三方工具,看起來很專業高深,但是作為測試小白來說,看到這樣的東西確實頭疼。我只是想好好了解一下Jmeter的使用啊,能不能完整的介紹一下啊?我不需要了解那麽多其他的第三方工具啊?能不能截個圖說的清楚一點啊?這個步驟裏的參數是幹嘛的啊?對應的什麽啊?你的這一步我怎麽出現問題了啊?怎麽不說解決方法啊。。。這應該是我前段時間查找Jmeter資料內心最多的問題了,真是嗶了狗了(我是一個優雅的程序猿,很少講粗話啦~嘿嘿)。對於使用某種新的東西,我的習慣往往是先把流程完整的跑一遍,記住,是完整,清晰,好歹別人看了之後對應著自己的需求也能照搬著實現,吐槽了夠多了,開始進入正題,我把我遇到的坑都說清楚,包括後來怎麽從坑裏爬出來的。。。

步驟一 安裝Jmeter

我用的版本是3.1版本,為什麽是3.1,因為3.2有問題,我也是跑了一段時間後才知道3.2版本太新了還是什麽的,有些功能就是不行,在此建議大家,不要輕易使用最新版本,次新版本就可以了。安裝好了之後Jmeter的bin目錄下有個Jmeter.bat文件,雙擊就能運行了。

技術分享圖片

步驟二 使用Jmeter測試未登錄頁面

運行軟件之後,我們當然要找個鏈接測試一下啦,這裏我們以百度為例,我們右擊“測試計劃”——“添加”——“Threads(Users)——線程組”,這樣就建了一個線程組了,這是幹嘛,當然是跑線程用的啊。有了線程組之後,我們再右擊線程組,“添加”——“配置元件”——“http請求默認值”,這個默認值是幹嘛的?裏面可以設置一些常用的默認的設置(這不是廢話嘛~),在http請求默認值面板裏面,我們可以輸入要測試的服務器的IP或者域名,這裏我們輸入“www.baidu.com”,協議是“https”,你要測試的網址如果是http開頭那就填“http”,其他默認不管了,這時候點擊左上角保存會彈出一個保存框,這是讓你保存你現在所做的測試配置,以後需要再測試的話的直接打開保存的jmx文件就行了。保存完了之後,我們再右擊“線程組”——“添加”——“Sampler”——“http請求”,哎,剛剛不是添加過了嗎?剛剛那個不是哦,剛剛那個只是默認值,只是用來設置一些默認配置,真正發起請求的是“http請求”,在http請求裏面我們在“路徑”裏面輸入斜杠“/”就行啦,表示默認路徑,IP那一欄就不用輸入了,為什麽呢?因為在http請求默認值裏面已經輸過啦,以後可以新建多個http請求,只要修改路徑就行了,這樣就可以訪問同一個網站的不同頁面,這就是“http請求默認值”的意義所在,把一些共用的設置寫一遍就好了。接著,我們再右擊“線程組”——“添加”——“監聽器”——“察看結果數”,在這裏可以查看到http請求和結果。每次新建組件和修改配置信息都要點擊保存,好了,頁面配置圖如下所示:

技術分享圖片

技術分享圖片

技術分享圖片

現在我們點擊工具欄的綠色運行按鈕,就可以在“察看結果樹”中看到結果了

技術分享圖片

我們新建的“http請求”返回結果200,表明請求成功,從綠色打鉤也能看出,上圖中的下拉列表框可以選擇顯示格式,我們選擇HTML,切換到“響應數據”就可以看到返回頁面,也就是百度首頁。

步驟三 設置線程並發數

剛剛我們完成了一個簡單的測試,你也應該感覺到自己啥也沒幹,就能測試了,其實不然,我們點擊“線程組”可以看到線程組的設置頁面,默認設置1個線程,1秒啟動,循環1次。線程數表示啟動多少個線程,Ramp-Up Period表示花多長時間啟動所有線程,循環次數表示每個線程的執行次數,例如,我設置線程數10,Ramp-Up Period為10,循環次數2,表示軟件將在10秒內啟動10個線程,也就是1秒啟動1個線程,每個線程執行兩次請求。

技術分享圖片

此外,我們還可以勾選“調度器”,比如我填入持續時間100,啟動延遲0,將循環次數勾選“永遠”,表示線程立即啟動,執行100秒後停止,註意,如果設置了持續時間和啟動延遲,那麽下面的啟動時間和結束時間就不起作用了,也就不用管了,點擊運行即可。

步驟四 設置其他監聽器

之前我們僅僅設置了“察看結果樹”這個監聽器,我們右擊“線程組”——“添加”——“監聽器”,裏面有好多監聽器可供選擇,比如圖形結果,用表格查看結果,聚合報告等等,這些都是反映測試過程的指標數據。圖形結果以圖形的形式顯示吞吐量、偏移、平均值等信息,表格結果顯示每一次請求的時間,返回,發送字節數,連接時間等等,聚合報告裏面顯示總體請求的吞吐量,錯誤率等等。下圖為表格結果的樣式。

技術分享圖片

可以看出,圖中顯示了20個Http請求,分別由10個線程執行,每個線程執行兩次,正好符合我們對於線程組的設置。圖中每一列的含義分別表示請求序號,開始時間,線程序號,請求名,請求所花的時間,請求狀態,請求字節數,發送字節數,等待時長,連接時間。

聚合報告如下圖所示,每一列的含義分別表示請求名稱,請求總數,請求的平均響應時間(毫秒),50%的請求的響應時間,90%的請求的響應時間,95%的請求的響應時間,99%的請求的響應時間,最小的響應時間,最大的響應時間,錯誤的請求率(錯誤請求數/總的請求數),吞吐量(每秒處理的請求數),接收的字節速率,發送的字節速率。

技術分享圖片

步驟五 登錄測試

前面我們測試的頁面是不需要登錄的,現在我們來測試一下登錄操作,由於登錄操作涉及到具體的內部網址和參數,我這裏就用一般網址和參數代替,但是方法是一樣的,例如,我們內網IP是1.1.1.1,登錄頁面是1.1.1.1/login.do,我們將1.1.1.1填入“http請求默認值”,將/login.do填入“http請求”的路徑裏面,關於登錄需要的參數我要特別說明一下,一般來說就是用戶名和密碼,但是往往還需要其他參數,我們可以通過抓包工具Fiddler進行抓包,我們在網站中進行一次正常登錄,可以在Fiddler中看到登錄需要的post參數,例如Fiddler中顯示登錄操作post參數有username,password,type,那麽需要在“http請求”裏面填入,下圖所示。

技術分享圖片

點擊“添加”按鈕就可以添加參數了,保存好後,我們點擊運行,就可以在察看結果樹中看到登錄成功後的頁面了,具體的操作和前面一樣的。

步驟六 會話保持

我們進入登錄後的頁面後,我還想訪問例如“我的賬戶”,“我的信息”等模塊怎麽辦,這些網頁需要登錄成功後才能訪問到,這裏我們就需要進行會話的保持,我們右擊“線程組”——“添加”——“配置元件”——“httpcookie管理器”,要添加的內容我們可以在察看結果樹的“請求”選項卡裏面看到,裏面可以看到登錄需要的cookie,例如JSESSIONID,我們將JSESSIONID填入cookie管理器的參數裏面,如下

技術分享圖片

此時,我們在http請求裏面輸入登錄後的頁面網址,例如“我的信息”等等,就可以請求成功啦。

步驟七 文件讀取網址

我們在“http請求”的路徑裏面填入的是我們要訪問的網頁,每次只能填一個,假如我想訪問好幾個網頁,例如首頁,通知頁,公司介紹頁等等,除了新建http請求外,我們還可以將這些網頁的地址存儲在TXT文件裏,例如,我要訪問1.1.1.1/index.do,1.1.1.1/information.do,1.1.1.1/company.do,我們可以這樣

技術分享圖片

網址填入後,我們在Jmeter裏面的“選項”——“函數助手對話框”——“StringFromFile”,將TXT的完整路徑貼到圖中位置,點擊生成,可以在框裏生成TXT文件的讀取路徑。

技術分享圖片

我們將$開頭的那串路徑貼到“http請求”的路徑裏面,就可以訪問到TXT裏面的所有網頁啦,如圖所示。

技術分享圖片

步驟八 服務器狀態實時監聽

上面我們介紹了幾個Jmeter自帶的監聽器,不知你是否感覺到有一點點無力,因為裏面顯示的指標好像都不是你特別需要的,至少對於我來說,我更關心我的請求執行過程中服務器狀態的改變,例如CPU,內存,磁盤,網絡,TPS,響應時間圖等等,因為這才是壓力測試的目的所在,服務器狀態隨著請求增加的變化曲線才是我們更加需要看到的。想看到服務器變化的曲線圖,我們需要下載JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,將這兩個jar包放入Jmeter的安裝路徑下的lib/ext/下面,重啟Jmeter後,右擊“線程組”——“添加”——“監聽器”,我們可以看到多了好多監聽器,大多數以“jp@gc”開頭的監聽器,我們選擇“PerfMon Metrics Collector”,裏面將會顯示服務器的狀態信息,現在還看不到,為什麽,因為要測試的服務器需要安裝一個包,叫ServerAgent.zip,比如我的服務器是linux,我們將ServerAgent在服務器中解壓,運行裏面的startAgent.sh就可以啦,啟動起來後可以看到如下

技術分享圖片

默認端口是4444,在這裏我要插一句,我當時運行後通過Telnet始終ping不到4444端口導致顯示不了,後來改成4445端口啟動就可以了,具體的服務器命令是ServerAgent-2.2.3/startAgent.sh--udp-port 4445 --tcp-port 4445,這樣就表示將serverAgent在4445端口啟動,你可以將4445換成其他端口,如果默認的4444端口不行的小夥伴可以試試其他端口哦。好了,我們回到Jmeter軟件,按下圖填入服務器的地址和端口號,以及需要監控的硬件,如CPU,內存,磁盤,網絡等等。

技術分享圖片

好了,我們點擊運行,可以在chart下看到服務器的狀態變化曲線啦

技術分享圖片

怎麽樣,是你想要的吧,其實監聽器裏面還有很多其他的曲線,看英文就知道,比如TPS曲線,響應時間曲線等等,這些你都可以自己添加,我就不贅述啦。好了,本篇博客的內容就到這了,有什麽不對的地方歡迎評論,我們一起討論一起進步,謝謝!

jmeter 壓力測試