1. 程式人生 > >記一次臨時抱佛腳的效能壓測經歷

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

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、資料庫的效能調優,有……

有技術,有情懷,有溫度