記一次臨時抱佛腳的效能壓測經歷
00 前因
幾周前的一個週五,幫朋友忙,需要給個軟體做壓力測試,花了一晚的時間學習了下,然後就趕鴨子上架去做這個事了。
想著有時間把學習過程整理下,結果忘掉了。
今天歡哥問到我上次壓測用了什麼軟體,才想起這個事,暫且整理下吧。
01 選型
一番調研後,先篩選了4個軟體:Loadrunner、Jmeter、Apache Bench、SysBench。
首先是做技術選型,目前主流的壓力測試軟體就是Loadrunner、Jmeter。
其他常用於效能測試的軟體還有Apache Bench、SysBench。
Loadrunner商用,有破解版,但是學習成本太高。
Jmeter是基於jdk的,開源免費,學習簡單,但是需要配合badboy或者代理方式錄製指令碼,比較麻煩。
Apache Bench 看名字就知道是阿帕奇家族的了,俗稱的ab壓測工具。支援apache、nginx、tomcat、IIS等伺服器。安裝、使用都比較簡單。
SysBench類似Apache Bench,但是隻能在Linux上安裝。
需要測試的web應用主要是壓測其登入、註冊、列表開啟這些場景,沒有GUI介面、指令碼錄製功能的兩個Bench工具首先放棄了。
Loadrunner太大,還要破解,學習成本太高也放棄了。
最後選中Jmeter,找了些資料,還去嗶哩嗶哩找了個視訊現學。
在嗶哩嗶哩學習Jmeter的時候,發現了黑羽壓測,感覺比較適合我的場景。
黑羽壓測(Hyload ),基於Python3,錄製指令碼簡單,可以遠端監控伺服器並秒回圖形,不需要匯出top、sar、vmstat這些資源監控命令的結果手動繪製圖形了。
如果併發非常大,需要多個壓力機測試,Hyload要購買pro版,不過一般一兩萬併發普通版本就夠了。
02 解決的坑
花了幾個小時把黑羽實戰了下,第二天就現學現賣。
結果到了現場傻眼,都是內網,而且是堡壘機,一執行就是黑羽壓測就是黑屏,也沒報什麼錯誤出來。
估計是win7版本太低了。
想想直接去下了Python3.7來安裝,然後執行下,看看到底報什麼錯,然後執行下。
果然有報錯提示了,結果提示沒有win7 servpack1。
又下載了servpack1補丁包,還是不能執行。
又按照提示下了兩個api-win的補丁。
早上9點多去的,搞環境一直搞到了下午三點,才把環境執行起來。
03 使用
黑羽壓測方便的一點是瀏覽器f12檢視network,save har可以直接匯入到hyload的ide中,稍微改下指令碼就好了。
並且貼心的有tps qps的壓力圖,還可以直接遠端部署監控指令碼到被測伺服器上,採集資訊後出具cpu io的監控圖表,對於出具效能測試報告比較方便。
官網教學文件:http://www.python3.vip/doc/tutorial/hyload/01/。
嗶哩嗶哩也有學習視,連結不放了,自己搜下。
壓力監測圖如下:
伺服器監測圖如下:
04 怎麼去做效能測試?
實際上真正的效能不是測試出來的,而是設計出來的,但是在此不展開。
效能測試應該有哪些步驟?
1、效能需求收集、分析
2、制定測試指標,編寫測試計劃、測試用例
3、測試工具選型,此步驟與2可調換
4、執行測試,觀察測試指標
5、達不到指定測試指標則修改程式碼或提升伺服器效能再次壓測
6、出具測試報告
效能測試要看哪些指標?
服務端指標:
吞吐量:系統單位時間內可處理業務量
併發數:在保證響應時間要求下的可同時處理的最大請求數
(隱含條件) 最高負載下,伺服器資源佔用率應在80%以下
客戶端指標:
響應時間:從使用者發起請求到完成所花費的時間
線上使用者數:一定時間內對系統產生訪問的使用者數。
一些術語:
qps , 每秒查詢請求數
tps , 每秒事物處理數/每秒接收響應數
eps, 每秒錯誤響應數
tops, 每秒超時請求個數(這個是黑羽壓測單獨拎出來的一個指標,有時候看eps就夠了)
avgresptime, 每秒平均響應時長
Throughput,吞吐量,即系統在單位時間內處理請求的數量。
使用壓測工具壓測時,不光觀察應用的情況,還要隨時觀察伺服器資源,如
1、CPU 佔用率
2、記憶體使用率
3、磁碟訪問量
4、網路吞吐量
觀察這些資源,在Linux下可使用top、iostat、vmstat、sar等工具。
06 效能測試常見的一些錯誤認知
錯誤:
1、把吞吐量當做併發
2、把客戶端說併發
3、把線上使用者說成併發
正解:
1、吞吐量是按時段來考慮的,併發數是按時刻來考慮的
2、響應時間越短,併發數與TPS差距越大
3、併發數 = tps / avgresptime
07 後記
授人以魚不如授人以漁,把黑羽壓測這個測試工具怎麼用,跟效能測試報告怎麼寫都教給了龍哥。
嗯,還是很有成就感的。
我開玩笑跟他說,以後他也可以去他公司其他部門輸出效能壓測這項技能了。
歡迎關注我的公眾號:姚毛毛的部落格
這裡有我的程式設計生涯感悟與總結,有Java、Linux、Oracle、mysql的相關技術,有工作中進行的架構設計實踐和讀書理論,有JVM、Linux、資料庫的效能調優,有……
有技術,有情懷,有溫度