發現一款後端程序員必備的壓測工具,十分鐘就能上手,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語言的壓測引擎
已開源:http://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,推薦一款不限速的國產遠程控制軟件
- 我的母親