記一次臨時抱佛腳的性能壓測經歷


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、數據庫的性能調優,有……

有技術,有情懷,有溫度

公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM