电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

python性能測(cè)試工具locust的使用

瀏覽:72日期:2022-07-01 08:58:21
一、簡(jiǎn)介

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

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

二、安裝

用 pip 管理工具安裝:

pip3 install locust

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

python性能測(cè)試工具locust的使用

三、壓測(cè)過程1.編寫腳本

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

from locust import HttpLocust, TaskSet, task, betweenimport os,json# 定義用戶行為class UserTask(TaskSet): def on_start(self): ’’’初始化數(shù)據(jù),每個(gè)虛擬用戶只執(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ù),每個(gè)虛擬用戶只執(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 運(yùn)行時(shí):

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

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

python性能測(cè)試工具locust的使用

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

python性能測(cè)試工具locust的使用

python性能測(cè)試工具locust的使用

python性能測(cè)試工具locust的使用

python性能測(cè)試工具locust的使用

3.運(yùn)行模式 1.web UI 模式

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

--web-host:指定 web UI IP,默認(rèn) localhost

--web-port:指定 web UI 端口,默認(rèn) 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:多少時(shí)間內(nèi),把上述 -c 設(shè)置的虛擬用戶全部啟動(dòng)

-t:腳本運(yùn)行多少時(shí)間,單位s

在 --no-web 模式下的報(bào)告如下:

python性能測(cè)試工具locust的使用

4.分布式進(jìn)程

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

單臺(tái)多進(jìn)程:

先啟一個(gè) master

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

再啟 8 個(gè) slave

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

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

python性能測(cè)試工具locust的使用

多臺(tái)多進(jìn)程:

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

python性能測(cè)試工具locust的使用

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

四、總結(jié)

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 短信群发平台_群发短信软件_短信营销-讯鸽科技 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 消防设施操作员考试报名时间,报名入口,报考条件 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 臻知网大型互动问答社区-你的问题将在这里得到解答!-无锡据风网络科技有限公司 | 湖南成人高考报名-湖南成考网| 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 中矗模型-深圳中矗模型设计有限公司 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 |