幾周前的一個週五,幫朋友忙,須要給個軟件作壓力測試,花了一晚的時間學習了下,而後就趕鴨子上架去作這個事了。python
想着有時間把學習過程整理下,結果忘掉了。mysql
今天歡哥問到我上次壓測用了什麼軟件,纔想起這個事,暫且整理下吧。ios
一番調研後,先篩選了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版,不過通常一兩萬併發普通版本就夠了。
花了幾個小時把黑羽實戰了下,次日就現學現賣。
結果到了現場傻眼,都是內網,並且是堡壘機,一運行就是黑羽壓測就是黑屏,也沒報什麼錯誤出來。
估計是win7版本過低了。
想一想直接去下了Python3.7來安裝,而後運行下,看看到底報什麼錯,而後運行下。
果真有報錯提示了,結果提示沒有win7 servpack1。
又下載了servpack1補丁包,仍是不能運行。
又按照提示下了兩個api-win的補丁。
早上9點多去的,搞環境一直搞到了下午三點,才把環境運行起來。
黑羽壓測方便的一點是瀏覽器f12查看network,save har能夠直接導入到hyload的ide中,稍微改下腳本就行了。
而且貼心的有tps qps的壓力圖,還能夠直接遠程部署監控腳本到被測服務器上,採集信息後出具cpu io的監控圖表,對於出具性能測試報告比較方便。
官網教學文檔:http://www.python3.vip/doc/tutorial/hyload/01/。
嗶哩嗶哩也有學習視,連接不放了,本身搜下。
壓力監測圖以下:
服務器監測圖以下:
實際上真正的性能不是測試出來的,而是設計出來的,可是在此不展開。
一、性能需求收集、分析
二、制定測試指標,編寫測試計劃、測試用例
三、測試工具選型,此步驟與2可調換
四、執行測試,觀察測試指標
五、達不到指定測試指標則修改代碼或提高服務器性能再次壓測
六、出具測試報告
服務端指標:
吞吐量:系統單位時間內可處理業務量 併發數:在保證響應時間要求下的可同時處理的最大請求數 (隱含條件) 最高負載下,服務器資源佔用率應在80%如下
客戶端指標:
響應時間:從用戶發起請求到完成所花費的時間 在線用戶數:必定時間內對系統產生訪問的用戶數。
一些術語:
qps , 每秒查詢請求數 tps , 每秒事物處理數/每秒接收響應數 eps, 每秒錯誤響應數 tops, 每秒超時請求個數(這個是黑羽壓測單獨拎出來的一個指標,有時候看eps就夠了) avgresptime, 每秒平均響應時長 Throughput,吞吐量,即系統在單位時間內處理請求的數量。
使用壓測工具壓測時,不光觀察應用的狀況,還要隨時觀察服務器資源,如
一、CPU 佔用率 二、內存使用率 三、磁盤訪問量 四、網絡吞吐量
觀察這些資源,在Linux下可以使用top、iostat、vmstat、sar等工具。
錯誤:
一、把吞吐量當作併發 二、把客戶端說併發 三、把在線用戶說成併發
正解:
一、吞吐量是按時段來考慮的,併發數是按時刻來考慮的 二、響應時間越短,併發數與TPS差距越大 三、併發數 = tps / avgresptime
授人以魚不如授人以漁,把黑羽壓測這個測試工具怎麼用,跟性能測試報告怎麼寫都教給了龍哥。
嗯,仍是頗有成就感的。
我開玩笑跟他說,之後他也能夠去他公司其餘部門輸出性能壓測這項技能了。
歡迎關注個人公衆號:姚毛毛的博客
這裏有個人編程生涯感悟與總結,有Java、Linux、Oracle、mysql的相關技術,有工做中進行的架構設計實踐和讀書理論,有JVM、Linux、數據庫的性能調優,有……
有技術,有情懷,有溫度