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、數據庫的性能調優,有……
有技術,有情懷,有溫度