av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

python性能測試工具locust的使用

瀏覽:74日期:2022-07-01 08:58:21
一、簡介

Locust 是一個易于使用,分布式,用戶負載測試工具。它用于負載測試 web 站點(或其他系統(tǒng)),并計算出一個系統(tǒng)可以處理多少并發(fā)用戶。在測試期間,一大群虛擬用戶訪問你的網(wǎng)站。每個測試用戶的行為由您定義,集群過程由 web UI 實時監(jiān)控。這將幫助您在讓真正的用戶進入之前進行測試并識別代碼中的瓶頸。

Locust 完全是基于事件的,因此在一臺機器上支持數(shù)千個并發(fā)用戶是可能的。與許多其他基于事件的應(yīng)用程序不同,它不使用回調(diào)。相反它通過 gevent 使用輕量級協(xié)程。這允許您用 Python 編寫非常有表現(xiàn)力的場景,而不用回調(diào)使代碼復(fù)雜化。

二、安裝

用 pip 管理工具安裝:

pip3 install locust

檢查是否安裝成功,執(zhí)行命令:locust --v

python性能測試工具locust的使用

三、壓測過程1.編寫腳本

Locust 不同于 jmeter 可以用 GUI 來創(chuàng)建壓測腳本。Locust 需要自己編寫 python 腳本,壓測負載腳本主要包含兩個子類UserTask和WebsiteUser,分別繼承TaskSet和Httplocust類,擁有這兩個父類的公共屬性和方法。

from locust import HttpLocust, TaskSet, task, betweenimport os,json# 定義用戶行為class UserTask(TaskSet): def on_start(self): ’’’初始化數(shù)據(jù),每個虛擬用戶只執(zhí)行一次’’’ self.client.post('/login',{'username':'test','password':'123456'}) @task(2) def home_index(self): r = self.client.get('/sz/Home/DefaultHomeV2Request') assert json.loads(r.text)[’Error’] == 0 @task(1) def sale(self): self.client.get('/sz/Home/FlashSaleRequest') assert json.loads(r.text)[’Error’] == 0 def on_stop(self): ’’’銷毀數(shù)據(jù),每個虛擬用戶只執(zhí)行一次’’’ self.client.post('/SignOut',{'CustomerGuid':'c7d7e646-9ce2-499b-a22e-a3c98d4545fe'})class WebsiteUser(HttpLocust): host = ’http://10.1.62.126’ task_set = UserTask wait_time = between(3, 5)if __name__ == '__main__': os.system(’locust -f stress_test.py ’)

locust 運行時:

on_start() :每個并發(fā)用戶在開始前各執(zhí)行一次 on_stop():每個并發(fā)用戶在結(jié)束后各執(zhí)行一次 @task: 通過裝飾器設(shè)置運行權(quán)重,比如上面代碼中 執(zhí)行任務(wù) home_index 和 sale 的總請求為 2:1 assert:斷言設(shè)置 wait_time :每個任務(wù)之間設(shè)置間隔時間,隨機從3~5區(qū)間內(nèi)取,單位是 s locust -f:指定 .py 壓測腳本路徑 2. Locust 監(jiān)控

順帶提一下 locust web UI監(jiān)控是基于 flask 框架,不指定 port 的話,默認地址:http://localhost:8089

python性能測試工具locust的使用

開始測試,Locust 提供一個簡易的監(jiān)控界面,可以看到 RPS、響應(yīng)時間 和 部分曲線圖

python性能測試工具locust的使用

python性能測試工具locust的使用

python性能測試工具locust的使用

python性能測試工具locust的使用

3.運行模式 1.web UI 模式

locust -f stress_test.py --web-host 10.1.44.31 --web-port 8090

--web-host:指定 web UI IP,默認 localhost

--web-port:指定 web UI 端口,默認 8089

2. no web 模式

locust -f stress_test.py --no-web -c 100 -r 20 -t 120

--no-web:指定無 web UI模式

-c:起多少 locust 用戶(等同于起多少 tcp 連接)

-r:多少時間內(nèi),把上述 -c 設(shè)置的虛擬用戶全部啟動

-t:腳本運行多少時間,單位s

在 --no-web 模式下的報告如下:

python性能測試工具locust的使用

4.分布式進程

Locust 是由 python 編寫的,由于GIL的限制,單進程不能利用CPU多核的優(yōu)勢(實際測試結(jié)果也是一樣,8核心的虛擬機,只有一核達到了95%以上的使用率,其余7核只圍觀,不出力)。所以單臺機器上想要盡可能的壓榨 CPU,只能開啟多進程,一般有多少個核心啟多少進程。

單臺多進程:

先啟一個 master

locust -f /home/script/stress_test.py --web-host 10.1.62.223 --master

再啟 8 個 slave

locust -f /home/script/stress_test.py --slave

slave 節(jié)點啟動后,在 locust 監(jiān)控中能看到

python性能測試工具locust的使用

多臺多進程:

多臺機器搭建 Locust 分布式 和 單臺搭建多進程差不多。只有一個區(qū)別,如果 slave 和 master 不在一臺機器上, slave 需要指定 --master-host 參數(shù):

python性能測試工具locust的使用

更多功能使用請查看Locust官方文檔,形成良好的習(xí)慣 :官方文檔

四、總結(jié)

Locust 基于 python 腳本定制化壓測,使用 python 語言來實現(xiàn) 參數(shù)化、關(guān)聯(lián)參數(shù)、斷言和一些復(fù)雜的壓測場景非常方便。Locust 使用協(xié)程來構(gòu)建tcp連接,本身單機并發(fā)能力強,但內(nèi)部是由requests庫的httpclient 發(fā)起網(wǎng)絡(luò)請求,requests庫功能挺全面,性能卻很一般,好在 Locust 支持分布式,彌補了一定的性能缺陷。根據(jù)自己做的測試,同樣幾臺客戶機,jmeter搭建分布式測出的 qps 比 Locust分布式 高1/3。如果要提升 locust 單進程性能,可以將 httpclient 的實現(xiàn)方式從 requests 換成 geventhttpclient ,這個下一篇再講述。

以上就是python性能測試工具locust的使用的詳細內(nèi)容,更多關(guān)于python性能測試工具locust的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产精品va在线看黑人 | 精品成人在线 | 在线免费观看黄 | 国产在线视频一区二区 | 一区二区三区视频 | 一级黄色性生活片 | 一级免费黄色片 | 成人深夜视频 | 黄色影视大全 | 国产欧美一区二区精品性色超碰 | 中文字幕在线免费看 | 欧美一级日韩一级 | 黄色片视频网站 | 四虎在线视频 | 国产草草 | 日本男人天堂 | 国产靠逼视频 | 久久国产精品一区二区三区 | 麻豆国产一区二区三区四区 | 欧美日在线 | 日韩久久久久 | 中文在线字幕观看 | 久久机热这里只有精品 | 91成人精品一区在线播放 | 日日日干干干 | 伊人中文字幕 | 一区视频在线 | 激情婷婷综合 | 一区二区三区视频在线播放 | 国产精品亚洲综合 | 欧美爱爱网站 | 国产精品成人在线观看 | 国产精品一区二区三区四区五区 | 婷婷91| 天天色天天色 | 国产一级片免费 | 精品国产一区二 | 国产伦精品一区二区三区视频黑人 | 欧美黄色一级大片 | 国产高清视频在线观看 | 亚洲天天操 |