發現一款後端程式設計師必備的壓測工具,十分鐘就能上手,yyds
壓測背景
單介面壓測是為了能夠在開發階段對單個介面進行效能測試,快速瞭解介面的承載能力、發現效能瓶頸,在開發早期就能發現問題,消除效能風險。
作為一名優秀的後端工程師,在交付線上環境前,對自己的每一個介面進行簡單的效能檢測,是一種良好的職業習慣。
另外,當業務在生產環境遇到實際介面請求瓶頸時,通過模擬真實的併發環境,也是一種快速尋找問題的方式。
壓測結果的影響因素
高併發結果很容易受外界因素影響,壓測時需要儘量減少外界因素影響。
影響壓測結果外界因素有本機控制代碼數限制,dns解析速度,網路質量,服務端連線數限制等等。例如使用1w併發,很容易出現超過本機最大控制代碼數限制(一般最大限制1024),超過控制代碼數限制的請求會因為控制代碼數受限導致連線失敗。
因此選擇合適併發數對測試介面效能非常重要,並非併發數越大越好。
實際實踐中建議併發數先在10,100,500,1000左右分別測試下,如果失敗率小於1%,再考慮逐步增加併發數量。只有增加併發每秒請求數量能持續增加才是健康的使用方式。當併發數增加到一定數量後,介面響應能力不再增加或者錯誤數變高,這時候再增加併發量是無效的。
壓測工具
1、Jmeter
Jmeter是apache公司基於java開發的一款開源壓力測試工具,體積小,功能全,支援http、https、websocket、grpc等協議的併發壓測。但缺點在於比較消耗單機效能,一般用於分散式壓測或作為壓測引擎使用。另外如果只想針對一個介面進行簡單測試,需要較深的操作路徑,使用起來較為繁瑣。
2、ab
ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache伺服器進行網站訪問壓力測試,也可以對或其它型別的伺服器進行壓力測試。比如nginx、tomcat、IIS等。
但唯一不足的是,ab基本是命令列執行,如果一個介面需要輸入較複雜的請求引數,操作起來會比較繁瑣。
3、Apipost
自7.0.12版本起,Apipost上線了單介面一鍵併發功能。據官方說法:底層採用了自研的基於Golang語言的壓測引擎
已開源:https://github.com/Apipost-Team/runnerGo
能較好的支援單機高併發壓測。目前支援http/https協議,對websocket、grpc等協議尚未支援。
本文簡單介紹基於http/https協議的壓測實踐,出於便捷性考慮,這裡採用 Apipost 的壓測模組。
壓測流程
1、壓測模組位於API除錯模組下,在進行介面除錯時可以看到,如圖所示:
2、在輸入被壓測的URL後,在壓測tab下,填寫併發數和輪次;
3、點選【開始壓測】按鈕,頁面展示【壓測中...】狀態;
4、壓測任務完成後,頁面展示壓測結果,完成壓測。
壓測結果計算方式:
- 發現一款後端程式設計師必備的壓測工具,十分鐘就能上手,yyds
- 銀行外包996,騎驢找馬要跳槽
- 外包四年太差勁,幡然醒悟要跳槽
- 裝了我這 10 個 IDEA 神級外掛後,同事也開始情不自禁的嘚瑟了
- JetBrains再出手,這次要幹翻 VS Code了????
- 我的第一個,10萬
- GitHub 官宣:棄用 trending 熱榜,開發者炸鍋了
- 大吃一驚!GitHub 30天后棄用Trending熱榜!
- WindTerm:新一代開源免費的終端工具,GitHub星標6.6k ,太酷了!
- 網上接單掙了 10000 元后的感觸
- 別再用 System.currentTimeMillis 統計耗時了,太 Low,試試 Spring Boot 原始碼在用的 StopWatch吧,夠優雅!
- 別再用 System.currentTimeMillis 統計耗時了,太LOW,這個工具類好用到爆!
- 在IDEA裡下個五子棋不過分吧?
- 在IDEA裡下五子棋不過分吧?
- 好用到爆!GitHub 星標 32.5k 的命令列軟體管理神器,功能真心強大!
- 終於,夢想實現了
- 我扔進垃圾桶的第一本Java書...
- 解放雙手!推薦一款 GitHub 星標 8.2k 的命令列軟體管理器,非常酷炫!
- 再見收費的TeamViewer,推薦一款不限速的國產遠端控制軟體
- 我的母親