jmeter接口性能測試實例

一、寫在前面
前段時間公司安排我對微服務算法接口做一個性能測試,好吧!做就做,以前沒有真實性做過性能測試,所以在做測試的時候是一邊學習一邊測試,網上很多關於性能測試的教程,但是基本上都是一些理論上的知識,實際上最重要的分析也沒有說過自己也是摸不到頭腦,希望大家在看的時候能夠有自己的理解,和對文章不足的地方指正。
二、項目架構
由於整個系統還在開發階段,具體採用什麼樣的架構還要等到最後完成的時候纔可以定,但是現在的話採用的是騰訊雲Linux+Redis+nginx,當然還有docker,到底用不用docker要根據以後的性能來決定了。在做性能測試之前你一定要了解整個項目的架構,方便分析性能的瓶頸在何處,所以我在這個地方是根據開發和運維的分析確定瓶頸在什麼地方。
三、工具的選擇
性能測試工具:jmeter、xshell
服務器性能監測工具:nmon、
壓力測試機:騰訊雲Windows2018(Windows2003)、16G、64位
網絡帶寬:20M
四、策略分析
接口調試
這裏寫圖片描述
這裏寫圖片描述
這個接口是post請求,參數以json格式傳遞,所以要在HTTP請求前面加上一個HTTP請求頭管理器的配置元件
結果
這裏寫圖片描述

發送成功,接下來修改線程組參數
這裏寫圖片描述
1、 線程數:可以理解爲虛擬用戶數
2、 Ramp-up-period:延時設置,0表示立即啓動,1表示1S內啓動多少個線程數,這裏最好不要設置成0,在較大線程數的時候,導致起始TPS異常低
3、 循環次數:1就是隻進行一次
4、 持續時間:壓測的時間
我在這裏設置的是線程數分別爲50/100/500/800/1500,延時設置爲1,循環次數勾選永遠,表示1秒內發送50/100/500/800/1500個線程數,持續時間600s,壓測10分鐘
五、服務器監測
1、下載nmon文件,http://nmon.sourceforge.net/pmwiki.php
2、查看Linux服務器配置
uname -a # 查看內核/操作系統/CPU信息
head -n 1 /etc/issue # 查看操作系統版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看計算機名
free -m # 查看內存使用量和交換區使用量
3、將nmon文件上傳到服務器
rz命令會直接彈出文件選擇框,如果安裝有xshell的話
解壓nmon文件:tar zxvf 文件名
一定要先查看Linux服務器的配置,下載相應的文件
在執行nmon文件時,記得添加執行權限chmod +x ./nmon(這裏我把需要的shell文件保留,刪除了不需要的)
執行./nmon可以看到Linux性能的實時情況
在啓動jmeter時,同時執行./nmon -f -c -s 每隔5S監測10分鐘(我壓測的是10分鐘)所以./nmon -f –c 120 -s5
執行完畢需要下載nmon解析文件:
http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser
六、執行結果
Tps圖這裏只作爲參考
這裏寫圖片描述
聚合報告
這裏寫圖片描述
在聚合報告沒有報錯的情況下troughput可以作爲TPS的參考值,網上說的什麼什麼計算公式,估計自己也搞不清楚,所以這裏大家記得,你不知道怎麼算的時候就直接問項目組,這個項目要達到的性能指標是多少,再進行優化,畢竟不是每個公司都像BBA那樣有專門的團隊來支撐性能測試,做性能測試的成本很高。
Nmon監控
這裏寫圖片描述
CPU
這裏寫圖片描述
剩餘內存
這裏寫圖片描述

I/O讀寫
這裏寫圖片描述

在本次測試活動中壓測腳本經過無數次修改、調試、最終確定性能測試瓶頸在Redis,測試不止要測試,還要找出問題的原因。我在這裏可能就是理解不夠深入,在運維協助下確定性能瓶頸,畢竟軟件本身沒喲報錯,日誌沒有報錯,jmeter執行腳本也沒有報錯,查看nginx服務器壓力也沒有問題,唯獨Redis服務器cup使用率非常高,連接數只有1024個,而我最大設置的線程數1500個,所以後面的就沒有直接使用連接數,而是等待其他完成後再進行連接。

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