Locust是一款<em>Python</em>技术栈的开源的性能测试工具。Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户。Locust 是非常简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负载测试,能
2021-05-19 16:30:19
效能測試工具有很多,選擇一款適合當前項目的是關鍵,以下為大家介紹效能測試工具 Locust 。
Locust是一款Python技術棧的開源的效能測試工具。Locust直譯為蝗蟲,寓意著它能產生蝗蟲般成千上萬的併發使用者。Locust 是非常簡單易用,分散式,使用者負載測試工具。Locust 主要為網站或者其他系統進行負載測試,能測試出一個系統可以併發處理多少使用者。Python的魔力在於化繁為簡,基於Python的Locust也能給仍然困惑於效能測試的我們帶來啟發,值得嘗試。
Locust特點
以純Python方式編寫使用者指令碼,提供極大自由度。使用者指令碼可以序列方式編寫,Locust會通過輕量級程序/協程產生併發,無需自己做併發程式設計。併發量大,藉助於gevent庫,Locust能產生成千上萬併發請求。開銷小,Locust使用者運行時開銷很小。良好的Web UI對效能結果實時監測。能測任何系統任何協議,只需要寫個client即可。開放REST API,盡情發揮。安裝Locust
需要Python版本3.6及以上。
執行pip命令:
$pip install locust
驗證是否安裝成功:
$ locust -V
安裝時會一併安裝依賴庫:Installing collected packages: Werkzeug, pywin32, zope.event, greenlet, gevent, geventhttpclient, itsdangerous, flask, Flask-BasicAuth,ConfigArgParse, pyzmq, psutil, locust提示如上,能看出來flask為Locust提供了Web功能。
快速上手
使用Locust一般按照以下步驟進行:
編寫Python使用者指令碼。使用 locust 命令執行效能測試。(可選)通過Web介面監測結果。示例程式碼如下,新建locustfile.py檔案:
import timefrom locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2.5) @task def hello_world(self): self.client.get("/hello") self.client.get("/world") @task(3) def view_items(self): for item_id in range(10): self.client.get(f"/item?id={item_id}", name="/item") time.sleep(1) def on_start(self): self.client.post("/login", json={"username":"foo", "password":"bar"})
路徑切換到locustfile.py檔案所在目錄,執行命令:
$ locust
也可以通過-f 指定某個目錄檔案:
$ locust -f locust_files/my_locust_file.py
運行後,開啟http://127.0.0.1:8089看到Web介面:
填寫資訊後,就能開始壓測了。Web介面提供了結果統計資料:
和效能指標走勢圖:
指令碼解析
示例指令碼解析如下:
# Locust使用者指令碼就是Python模組
import timefrom locust import HttpUser, task, between# 類繼承自HttpUserclass QuickstartUser(HttpUser):# 每個模擬使用者等待1~2.5秒 wait_time = between(1, 2.5) # 被@task裝飾的才會併發執行 @task def hello_world(self): # client屬性是HttpSession例項,用來發送HTTP請求 self.client.get("/hello") self.client.get("/world") # 每個類只會有一個task被選中執行 # 3代表weight權重 # 權重越大越容易被選中執行 # view_items比hello_wolrd多3倍概率被選中執行 @task(3) def view_items(self): for item_id in range(10): # name參數作用是把統計結果按同一名稱進行分組 # 這裡防止URL參數不同會產生10個不同記錄不便於觀察 # 把10個彙總成1個"/item"記錄 self.client.get(f"/item?id={item_id}", name="/item") time.sleep(1) # 每個模擬使用者開始運行時都會執行 def on_start(self): self.client.post("/login", json={"username":"foo", "password":"bar"})
小結
本文先大概瞭解了Locust的背景和生態,它是值得學習的,對於Python技術棧來說更加如此。接著介紹了使用pip命令安裝Locust,其中發現順帶安裝了flask,Locust的Web功能是flask提供的,從源頭開始,適合入門朋友瞭解學習。
相關文章
Locust是一款<em>Python</em>技术栈的开源的性能测试工具。Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户。Locust 是非常简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负载测试,能
2021-05-19 16:30:19
Hello,大家好,这里是随时随地准备死磕的DFBoy,课程前面部分讲了不少使用<em>Python</em>绘制Excel图表的操作,今天,我们要讲的内容是关于单元格的操作。很多时候我们对于单元格并不是很重视,但在实际操作情况中,单元格的一些
2021-05-19 16:30:07
在硬件配置上,Surface Laptop 4商用版提供8GB、16GB或32GB三种内存规格,<em>SSD</em>硬盘可选256GB、512GB或1TB,CPU可以选择英特尔酷睿i5-1135G7、i7-1185G7,以及专为微软Surface定制的AMD锐龙5 4680U(13.5英寸版本)
2021-05-19 16:01:12
<em>固态硬盘</em>装系统,机械硬盘存数据,这是大多数人的装机方案。由于工作需要,微软的办公和开发全家桶、Adobe全家桶都得装在<em>固态硬盘</em>上,通过近一年的使用下来,固态的空间不堪重负,早已空间告急。好在<em>固态
2021-05-19 16:01:01
Google发布了 <em>Android</em> 12 的第一个 Beta 版,我们看看都有什么功能~<em>Android</em> 的新UI 相对之前的版本,<em>Android</em> 12 带来了 <em>Android</em> 历史上最大的设计变更,将软件和硬件的生态系统统一在
2021-05-19 16:00:43
说起手机系统,从前被大家所熟知的仅为<em>Android</em>和IOS,如今华为研发的鸿蒙系统( HarmonyOS)也已问世。相信未来<em>Android</em>、IOS、HarmonyOS必将形成三足鼎立的局面。 近日,有关华为鸿蒙系统和<em>Android
2021-05-19 16:00:40