記一次使用Jmeter的性能壓測過程

最近在搞一個小項目,也是爲春招準備準備,在寫完基本的webserver後,部署到了阿里雲服務器上,決定玩一玩壓測,我的阿里雲主機配置爲學生機配置,順便幫推一波女票的博客,分享一下webServer端部署操作的一些配置合集:
阿里雲CentOS7安裝 jdk8+tomcat8+maven+MySQL5.7+redis5
阿里雲CentOS7安裝Nginx
在命令行中使用SSH免密登錄服務器
域名解析到服務器

下面開始言歸正傳,目前Java壓測中,比較大衆的應該還是Jmeter,然後可以去到Jmeter的官網進行下載。
注意:一點要下載和自己JDK匹配的Jmeter版本,比如Jmeter4.0匹配jdk8和jdk9
,而Jmeter5.0則只匹配jdk8以上的(不包括jdk8!!
下圖爲官網的描述:
在這裏插入圖片描述

官網首頁只有最新版本,老版本鏈接在此

在這裏插入圖片描述
在這邊下載,個人推薦選擇binaries中的下載源進行下載,source中下載下來以後一運行Jmeter總是會報如下的錯:
在這裏插入圖片描述
意思是說找不到ApacheJMeter.jar,迅速去安裝目錄裏看看,在根目錄和Jmeter的bin目錄下都找不到這個jar(我起初以爲是我網絡或者下載器的問題,後來發現就是source這個下載源很有問題,至於sources我沒有試過),所以就試了試binaries中的,我的操作系統是x64,win10,我選擇下載的版本是下面的這個:
在這裏插入圖片描述

下載解壓後,需要去配置一下子環境變量,否則的話,是啓動不了的,環境變量網上有很多博客,可以自行百度一下,分別配置一下系統變量中的Path,Classpath再新建一個JMETER_HOME即可。
一般,對於啓動後對話框一閃就消失的問題應該就是環境變量配置得問題(我遇到的是這種情況
配置去Jmeter的bin目錄啓動Jmeter.bat(windows批處理文件)
,啓動後是下面的樣子:(一個終端,還有一個帶GUI的系統)
在這裏插入圖片描述
在這裏插入圖片描述

接下來確保自己在服務器上的應用在後臺正常運行,我的項目是springboot寫的,直接在pom.xml加上maven的打包依賴,mvn clean,maven package打成jar,之後上傳服務器,在服務器終端中使用命令:

nohup java -jar xxxxxxx.jar &

然後按回車,之後稍等一下,輸入如下命令查看應用是否啓動了,並且與此同時,在與jar同以目錄下,會生成一個名爲nohup.out的日誌文件:

netstat -tunlp | grep 8090

在這裏插入圖片描述
發現服務已經啓動,pid爲7172,想要查看具體啓動情況,可以使用cat命令查看nohup.out的內容

下一步就是在Jmeter中繼續壓測了,這裏有四個點需要進行配置:

  • 線程組:用來組裝Jmeter發送請求的線程池
  • Http請求,用來模擬壓測中客戶端對於接口的調用
  • 查看結果樹:可以查看結果集合,其中正確結果,失敗結果均可以查詢,而且會有一個返回值
  • 聚合報告:反映性能的平均數,中位數,90線,95線,99線,以及
    對應TPS的數量,不清楚TPS的話看看這裏:TPS與QPS

下面就開始了:
首先,英文不太好的盆友可以切換一下語言:
在這裏插入圖片描述

現在右鍵單擊測試計劃,添加一個線程組
在這裏插入圖片描述

線程組中常用的爲下面三個配置:
在這裏插入圖片描述
比如這裏就是讓20個線程在10秒內完成啓動並且每個線程循環執行1次。

下一步:添加Http請求,即對於自己想要做壓力測試的接口進行請求配置
在這裏插入圖片描述

添加好了之後,對於一些屬性做出配置:
在這裏插入圖片描述
注意,這裏的keep-alive屬性要打勾,目的是建立長鏈接,既然是在做壓測,那麼就不該把性能分散到頻繁得鏈接建立上去,否則開銷太大
接下來,右鍵單擊http請求,分別添加結果樹與聚合報告。

至此,就可以開始進行一個簡單得壓測了,我先對一個get請求進行簡單得壓測,點擊開始:
在這裏插入圖片描述
這時如果沒有保存過會跳出一個彈框提示你先保存自己的壓測計劃,保存之後就會執行了,起初我先將線程組設置成這樣:
在這裏插入圖片描述
查看結果樹:
在這裏插入圖片描述
進行了正常請求與數據響應,
查看聚合報告:
在這裏插入圖片描述
主要觀察的指標爲這兩個,95%line是指返回百分之95的請求所消耗的時間,
可見,服務器並沒有感受到任何壓力,而且服務器還想笑,那下面我就要開始進一步測試了(注意:爲了相對準確測出server端的性能,自己應該調整好每次增加的線程數以及對應的循環次數)

此處的過程省略500字兒…

來了來了他來了:
當我把線程數量加到下面這個樣子:
在這裏插入圖片描述
結果再看看結果樹:
起初還能正常請求,但是當線程都啓動起來後:
在這裏插入圖片描述
這個時候基本是卡在這裏了,看看聚合報告:這個錯誤率已經很高了,顯然已經不再適合於服務用戶了,而這個併發量說實話不算高,現在想想天貓雙十一面對上億併發量還能處理自如,確實是牛!
在這裏插入圖片描述
情況已經不太樂觀了,那如果再上一波線程數呢?
在這裏插入圖片描述
在這裏插入圖片描述
發現,已經出現了很多的error,再查看聚合報告:
在這裏插入圖片描述

可以在服務器終端,使用top命令去查看cpu佔用率,發現這個時候,cpu也飆得很高,並且mysqld,也就是數據庫服服務,佔用了大量CPU,所以看上去需要進一步做優化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章