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

00 前因

幾周前的一個週五,幫朋友忙,須要給個軟件作壓力測試,花了一晚的時間學習了下,而後就趕鴨子上架去作這個事了。python

想着有時間把學習過程整理下,結果忘掉了。mysql

今天歡哥問到我上次壓測用了什麼軟件,纔想起這個事,暫且整理下吧。ios

01 選型

一番調研後,先篩選了4個軟件:Loadrunner、Jmeter、Apache Bench、SysBench。nginx

首先是作技術選型,目前主流的壓力測試軟件就是Loadrunner、Jmeter。web

其餘經常使用於性能測試的軟件還有Apache Bench、SysBench。sql

Loadrunner商用,有破解版,可是學習成本過高。數據庫

Jmeter是基於jdk的,開源免費,學習簡單,可是須要配合badboy或者代理方式錄製腳本,比較麻煩。apache

Apache Bench 看名字就知道是阿帕奇家族的了,俗稱的ab壓測工具。支持apache、nginx、tomcat、IIS等服務器。安裝、使用都比較簡單。編程

SysBench相似Apache Bench,可是隻能在Linux上安裝。api

須要測試的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 怎麼去作性能測試?

實際上真正的性能不是測試出來的,而是設計出來的,可是在此不展開。

性能測試應該有哪些步驟?

一、性能需求收集、分析

二、制定測試指標,編寫測試計劃、測試用例

三、測試工具選型,此步驟與2可調換

四、執行測試,觀察測試指標

五、達不到指定測試指標則修改代碼或提高服務器性能再次壓測

六、出具測試報告

性能測試要看哪些指標?

服務端指標:

吞吐量:系統單位時間內可處理業務量
併發數:在保證響應時間要求下的可同時處理的最大請求數

(隱含條件) 最高負載下,服務器資源佔用率應在80%如下

客戶端指標:

響應時間:從用戶發起請求到完成所花費的時間
在線用戶數:必定時間內對系統產生訪問的用戶數。

一些術語:

qps , 每秒查詢請求數

tps , 每秒事物處理數/每秒接收響應數

eps, 每秒錯誤響應數

tops, 每秒超時請求個數(這個是黑羽壓測單獨拎出來的一個指標,有時候看eps就夠了)

avgresptime, 每秒平均響應時長

Throughput,吞吐量,即系統在單位時間內處理請求的數量。

使用壓測工具壓測時,不光觀察應用的狀況,還要隨時觀察服務器資源,如

一、CPU 佔用率 
二、內存使用率 
三、磁盤訪問量 
四、網絡吞吐量

觀察這些資源,在Linux下可以使用top、iostat、vmstat、sar等工具。

06 性能測試常見的一些錯誤認知

錯誤:

一、把吞吐量當作併發
二、把客戶端說併發
三、把在線用戶說成併發

正解:

一、吞吐量是按時段來考慮的,併發數是按時刻來考慮的
二、響應時間越短,併發數與TPS差距越大
三、併發數 = tps / avgresptime

07 後記

授人以魚不如授人以漁,把黑羽壓測這個測試工具怎麼用,跟性能測試報告怎麼寫都教給了龍哥。

嗯,仍是頗有成就感的。

我開玩笑跟他說,之後他也能夠去他公司其餘部門輸出性能壓測這項技能了。


歡迎關注個人公衆號:姚毛毛的博客

這裏有個人編程生涯感悟與總結,有Java、Linux、Oracle、mysql的相關技術,有工做中進行的架構設計實踐和讀書理論,有JVM、Linux、數據庫的性能調優,有……

有技術,有情懷,有溫度

公衆號

相關文章
相關標籤/搜索