1. 程式人生 > >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後,右擊“執行緒組”——“新增”——“監聽器”,我們可以看到多了好多監聽器,大多數以“[email protected]”開頭的監聽器,我們選擇“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曲線,響應時間曲線等等,這些你都可以自己新增,我就不贅述啦。好了,本篇部落格的內容就到這了,有什麼不對的地方歡迎評論,我們一起討論一起進步,謝謝!