locust的使用


 

一、簡介

Locust是一款使用Python編寫的壓力測試工具,本篇總結會介紹在實際測試過程中遇到的問題

https://www.locust.io/

使用Locust的原因是因為可以模擬的用戶數量可以通過添加硬件來增長,相對於jmeter來說配置更加方便。

二、需求描述

項目采用node+redis+oracle的模式,需要測試出單台服務器的性能瓶頸。

三、實際測試

環境的搭建:服務器上只需要安裝好Python2.7及以上的版本,然后通過pip安裝locust就完成了搭建。

1、 pip安裝(python的包管理工具,沒有pip則不能安裝第三方庫)python有兩個主流的包管理工具easy_install.py和pip,easy_install.py是安裝python的時候默認安裝的,而pip僅以zip文件的形式保存的python目錄中,需要我們手動的安裝

【命令】:E:\python\Scripts\pip.exe

這里的路徑為你安裝的python路徑,找到安裝目錄中\Scripts文件夾下pip文件即可安裝pip(這里已經安裝好了)

2、 gevent庫的安裝

【命令】: E:\python\Scripts\pip.exe install gevent

3、 flask庫的安裝

【命令】:E:\python\Scripts\pip.exe install flask

注:如果不知道版本號可以直接安裝flask包,系統會安裝不同版本的包(不建議使用)

4、 request庫的安裝

【命令】:E:\python\Scripts\pip.exe install requests==2.18.1

注:安裝庫的時候若不知道版本號,可以直接輸入命令E:\python\Scripts\pip.exe install requests== 從報錯信息中查看所有的版本號(建議安裝最新的版本)

5、 msgpack-python庫的安裝

【命令】:E:\python\Scripts\pip.exe install msgpack-python==0.4.8

6、 six庫的安裝

【命令】:E:\python\Scripts\pip.exe install six==1.11.0

7、 pyzmq庫的安裝

【命令】:E:\python\Scripts\pip.exe install pyzmq

8、 locust的安裝(最后一步)

【命令】:E:\python\Scripts\pip.exe install locustio

 

E:\Python27\python-2.7.13.msi

 

腳本編寫:根據需求編寫好python腳本,放到服務器上如 locust1.py。

 

腳本運行:通常使用的是主從模式來運行腳本,這樣能夠方便進程多開。

打開python27目錄,輸入命令:

cd  /d E:\Python27\locust-master

locust -f locust1.py --master   

該命令運行后會生成一個主進程進行管理,主進程只需要一個。

 

 

locust -f locu.py --slave   

該命令運行后會有一個子進程啟動,根據需要可以多次運行就會開啟多個子進程,子進程用來模擬用戶數量。

如果需要多進程就要打開多個窗口開進程

 

 

 

以上命令運行后或默認開啟8089 端口,通過瀏覽器訪問本地8089端口就能進入web界進行控制。

訪問地址: http://localhost:8089slave 就是開啟的子進程數量。

 

 

 

 

如果不同的機器,加后綴主機masterIP

 

locust -f ../Python27/load_test1.py  --slave   --master-host=*ip

 

3.用戶數量的詳細解釋

web界面的user 數量表示並發數,也就是每次訪問的並發連接數。實踐的時候用戶數量是300,表示每次訪問有300個用戶同時訪問,吞吐量能達到2000/s,說明在一秒的時間內服務器響應了大約7次,那么300的用戶耗費的時間就是140ms左右。

4.用戶數量與slvae關系

用戶數量是300,slave為3,那么每個slave會平均分配發送的用戶量100,與jmerter分布式不一樣。

五、最終測試結果

服務器配置:CPU 8核 內存16G  
承受最大業務量900萬次請求數,占用內存12G,占用磁盤空間23G。
redis與業務量關系 80萬請求數占用1G redis內存
磁盤與業務量關系  80萬請求數占用2G 磁盤空間

 

 

附錄:

 

locust -f ../locust-master/load_test.py  --master

重新開終端窗口

locust -f ../locust-master/load_test.py  --slave

 

 

 

遠程鏈接阿里雲服務器

Win10系統下使用“WIN+R”組合快捷鍵打開運行對話框,然后輸入“mstsc",點擊確定

輸入服務器IP

 

 

 

QPS: 每秒鍾處理完請求的次數;注意這里是處理完。具體是指發出請求到服務器處理完成功返回結果。可以理解在server中有個counter,每處理一個請求加11秒后counter=QPS

 

TPS:每秒鍾處理完的事務次數,一般TPS是對整個系統來講的。一個應用系統1s能完成多少事務處理,一個事務在分布式處理中,可能會對應多個請求,對於衡量單個接口服務的處理能力,用QPS比較多。

 

並發量:系統能同時處理的請求數

 

RT:響應時間,處理一次請求所需要的平均處理時間

 

計算關系:

 

QPS = 並發量 / 平均響應時間

 

並發量 = QPS * 平均響應時間

 

 

 

對比:

測試場景:

對比locusthttpLocust庫、python2基礎庫httplib python3基礎庫http.client的效率和壓力

 

測試接口:通過GET獲取URL返回值

Slave機配置:單台816G

Slave實例:10

對比結果:httplocustRPS最大值4Kpython2的最大值12Kpython3的最大值15K

 

 

JmeterTPS最大值是34K

 

 

 

 


免責聲明!

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



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