最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年12月28日 16:08:40   作者:三只松鼠  
這篇文章主要介紹了python性能測(cè)試工具locust的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

一、簡(jiǎn)介

  Locust 是一個(gè)易于使用,分布式,用戶負(fù)載測(cè)試工具。它用于負(fù)載測(cè)試 web 站點(diǎn)(或其他系統(tǒng)),并計(jì)算出一個(gè)系統(tǒng)可以處理多少并發(fā)用戶。在測(cè)試期間,一大群虛擬用戶訪問(wèn)你的網(wǎng)站。每個(gè)測(cè)試用戶的行為由您定義,集群過(guò)程由 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)。相反它通過(guò) gevent 使用輕量級(jí)協(xié)程。這允許您用 Python 編寫(xiě)非常有表現(xiàn)力的場(chǎng)景,而不用回調(diào)使代碼復(fù)雜化。

二、安裝

 用 pip 管理工具安裝: 

pip3 install locust

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

三、壓測(cè)過(guò)程

1.編寫(xiě)腳本

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

from locust import HttpLocust, TaskSet, task, between
import 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):
    '''銷(xiāo)毀數(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ā)用戶在開(kāi)始前各執(zhí)行一次
  • on_stop():每個(gè)并發(fā)用戶在結(jié)束后各執(zhí)行一次
  • @task: 通過(guò)裝飾器設(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 

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

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:指定無(wú) web UI模式

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

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

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

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

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

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

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

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

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

四、總結(jié)

  Locust 基于 python 腳本定制化壓測(cè),使用 python 語(yǔ)言來(lái)實(shí)現(xiàn) 參數(shù)化、關(guān)聯(lián)參數(shù)、斷言和一些復(fù)雜的壓測(cè)場(chǎng)景非常方便。Locust 使用協(xié)程來(lái)構(gòu)建tcp連接,本身單機(jī)并發(fā)能力強(qiáng),但內(nèi)部是由requests庫(kù)的httpclient 發(fā)起網(wǎng)絡(luò)請(qǐng)求,requests庫(kù)功能挺全面,性能卻很一般,好在 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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python-docx文件定位讀取過(guò)程(嘗試替換)

    python-docx文件定位讀取過(guò)程(嘗試替換)

    今天小編就為大家分享一篇python-docx文件定位讀取過(guò)程(嘗試替換),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python?pip命令清除Python包緩存文件問(wèn)題

    Python?pip命令清除Python包緩存文件問(wèn)題

    這篇文章主要介紹了Python?pip命令清除Python包緩存文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • python用socket實(shí)現(xiàn)協(xié)議TCP長(zhǎng)連接框架

    python用socket實(shí)現(xiàn)協(xié)議TCP長(zhǎng)連接框架

    大家好,本篇文章主要講的是python用socket實(shí)現(xiàn)協(xié)議TCP長(zhǎng)連接框架,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 教你利用Selenium+python自動(dòng)化來(lái)解決pip使用異常

    教你利用Selenium+python自動(dòng)化來(lái)解決pip使用異常

    今天帶大家來(lái)學(xué)習(xí)怎么利用Selenium+python自動(dòng)化解決pip使用異常,文中介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • OpenCV-Python實(shí)現(xiàn)圖像平滑處理操作

    OpenCV-Python實(shí)現(xiàn)圖像平滑處理操作

    圖像平滑處理的噪聲取值主要有6種方法,本文主要介紹了這6種方法的具體使用并配置實(shí)例方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-06-06
  • Python全局變量global關(guān)鍵字詳解

    Python全局變量global關(guān)鍵字詳解

    這篇文章主要介紹了Python全局變量global關(guān)鍵字詳解,需要的朋友可以參考下
    2021-04-04
  • Python求均值,方差,標(biāo)準(zhǔn)差的實(shí)例

    Python求均值,方差,標(biāo)準(zhǔn)差的實(shí)例

    今天小編就為大家分享一篇Python求均值,方差,標(biāo)準(zhǔn)差的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python開(kāi)發(fā)之迭代器&生成器的實(shí)戰(zhàn)案例分享

    Python開(kāi)發(fā)之迭代器&生成器的實(shí)戰(zhàn)案例分享

    在 Python 中,迭代器和生成器都是用來(lái)遍歷數(shù)據(jù)集合的工具,可以按需逐個(gè)生成或返回?cái)?shù)據(jù),從而避免一次性加載整個(gè)數(shù)據(jù)集合所帶來(lái)的性能問(wèn)題和內(nèi)存消耗問(wèn)題。本文主要和大家分享幾個(gè)貼近實(shí)際運(yùn)維開(kāi)發(fā)工作中的場(chǎng)景案例,希望對(duì)大家有所幫助
    2023-04-04
  • Python Socket傳輸文件示例

    Python Socket傳輸文件示例

    這篇文章主要介紹了Python Socket傳輸文件示例,發(fā)送端可以不停的發(fā)送新文件,接收端可以不停的接收新文件。有興趣的可以了解一下。
    2017-01-01
  • python基礎(chǔ)教程之udp端口掃描

    python基礎(chǔ)教程之udp端口掃描

    開(kāi)發(fā)一個(gè)程序,用于獲取局域網(wǎng)中開(kāi)啟snmp服務(wù)的主機(jī)ip地址列表,并寫(xiě)入相應(yīng)文件以便其它程序使用。下面是實(shí)現(xiàn)方法
    2014-02-02

最新評(píng)論

保康县| 安国市| 达孜县| 台南县| 兴城市| 于田县| 麻栗坡县| 台北市| 柯坪县| 凤凰县| 寻乌县| 龙泉市| 宣恩县| 平谷区| 九龙坡区| 潜山县| 正定县| 望谟县| 烟台市| 呈贡县| 嫩江县| 木兰县| 诏安县| 同仁县| 梨树县| 正阳县| 都江堰市| 乌恰县| 岢岚县| 鸡东县| 威远县| 昌宁县| 和硕县| 井陉县| 车险| 金乡县| 饶平县| 德昌县| 六盘水市| 萨迦县| 措美县|