1 JMeter
1.1 引言
在日常開發(fā)中,當完成一個接口開發(fā)時,需要對接口進行準確性測試,比如PostMan、Swagger等,但在接口上線運行前對其進行性能測試是很有必要的,就是所謂的接口壓力測試。
壓力測試就是考察當前軟硬件環(huán)境下系統(tǒng)所能承受的最大負荷,并借助結果找出系統(tǒng)瓶頸所在。使用壓力測試可以找到更難發(fā)現(xiàn)的問題,比如:內(nèi)存泄漏,并發(fā)和同步。
有效的壓力測試系統(tǒng)將應用一下這些關鍵條件:重復、并發(fā)、量級、隨機變化。
1.2 壓力測試指標
壓力測試指標:
- 響應時間(
Response Time : RT)
響應時間指用戶從客戶端發(fā)起一個請求開始,到客戶端接收到從服務器端返回的響應結束,整個過程所耗費的時間,下面熟悉一下結果名詞:-
HPS(Hits Per Second):每秒點擊次數(shù),單位是次/秒 -
TPS(Transaction Per Second):系統(tǒng)每秒處理交易數(shù),單位是筆/秒 -
QPS(Query Per Second):系統(tǒng)每秒處理查詢次數(shù),單位是次/秒
-
- 最大響應時間(
Max Response Time):指用戶發(fā)出請求或者指令到系統(tǒng)做出反應(響應)的最大時間 - 最少響應時間(
Mininum Response Time):指用戶發(fā)出請求或者指令到系統(tǒng)做出反應(響應)的最少時間 -
90%響應時間(90% Response Time):是指所有用戶的響應時間進行排序,第90%的響應時間
對于互聯(lián)網(wǎng)業(yè)務,某些業(yè)務有且僅有一個請求連接,那么TPS=QPS=HPS,一般情況下,用TPS來衡量整個業(yè)務流程,用QPS來衡量接口查詢次數(shù),用HPS來表示對服務器單擊請求。無論TPS、QPS、HPS,此指標是衡量系統(tǒng)處理能力非常重要的指標,越大越好。
一般情況下:
金融行業(yè):1000TPS~50000TPS,不包括互聯(lián)網(wǎng)化的活動
保險行業(yè):100TPS~1000000TPS,不包括互聯(lián)網(wǎng)化的活動
制造業(yè):10TPS~5000TPS
互聯(lián)網(wǎng)電子商務:10000TPS~10000000TPS
互聯(lián)網(wǎng)中型網(wǎng)站:1000TPS~50000TPS
互聯(lián)網(wǎng)小型網(wǎng)站:500TPS~10000TPS
性能測試主要關注如下三個指標:
-
吞吐量:每秒鐘系統(tǒng)能夠處理的請求數(shù)、任務數(shù),該值越大越好 -
響應時間:服務處理一個請求或一個任務的耗時 -
錯誤率:一批請求中結果出錯的請求所占比例
1.3 JMeter工具使用
1.3.1 JMeter安裝
官網(wǎng): https://jmeter.apache.org/

需要注意的是:JMeter5.3版本要求Java8以上版本
將下載的壓縮包解壓后,進入到bin目錄中,雙擊執(zhí)行 jmeter.bat,會進入到下面這個頁面。
1.3.2 切換成中文
選項 > 選擇語言 > 中文

1.3.3 添加線程組
添加線程組,創(chuàng)建模擬多少個并發(fā)用戶

1.3.4 添加HTTP請求
創(chuàng)建完線程組后,再添加http請求,表示要對哪個接口進行測試


1.3.5 添加監(jiān)聽器
為需要壓測的http請求添加監(jiān)聽器,用戶生成測試結果


1.3.6 自動壓測

1.4 JMeter Address Already in use 錯誤解決
這個問題是Windows本身提供的端口訪問機制引發(fā)的,Windows提供給TCP/IP鏈接的端口為1024-5000,并且要四分鐘來循環(huán)回收它們,這樣會導致我們在較短時間內(nèi)跑大量的請求時將端口占滿了。
解決方法:
cmd中,用regedit命令打開注冊表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Tcpip\Parameters下
- 右擊
parameters,添加兩個新的DWORD,名字為MaxUserPort和TCPTimedWaitDelay - 然后雙擊
MaxUserPort,輸入數(shù)值數(shù)據(jù)為65534(十進制),如果是分布式運行的話,控制機器和負載機器都需要這樣操作 -
TCPTimedWaitDelay30(十進制),表示把端口回收時間從4分鐘,改為30秒
修改配置完畢之后,記得重啟機器才會生效