Locust是一種基於Python編寫的開源負載測試工具,它可以模擬大量用戶同時訪問網站或API,以測試系統的性能和可靠性。Locust的使用非常簡單,只需要編寫一些Python腳本即可模擬用戶的行為,並通過圖形化界面實時監控系統的性能指標,如請求成功率、平均響應時間、並發用戶數等。Locust還支持多種協議,如HTTP、WebSocket、TCP等,並提供了豐富的插件和擴展功能,可以滿足不同場景下的負載測試需求。
使用docker-compose建置Locust的好處包括:
1. 簡化安裝流程:使用docker-compose可以快速部署和配置Locust,不需要手動安裝和設定。
2. 方便管理:使用docker-compose可以輕鬆管理Locust的版本和依賴庫,以及將整個應用程序容器化。
3. 提高可移植性:使用docker-compose可以讓Locust應用程序在不同的環境中運行,並且可以輕鬆地在不同的機器之間移植。
4. 簡化測試:docker-compose可以讓您在本地或在CI/CD環境中快速啟動Locust,並且可以輕鬆地自動化測試流程。
總之,使用docker-compose可以簡化Locust的部署和管理,提高可移植性和自動化測試流程,是一種非常方便和有用的工具。
Docker-compose
version: '3'
services:
master:
image: locustio/locust:2.8.5
ports:
- "8089:8089"
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py --master --web-host 0.0.0.0
worker:
image: locustio/locust:2.8.5
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py --worker --master-host master
測試檔案 locustfile.py
from locust import HttpUser, task, between, events
@events.request.add_listener
def on_request(request_type, name, response_time, response_length, exception, context, **kwargs):
"""
Event handler that get triggered on every request.
"""
if exception:
print(f"Exception title: {exception}")
print(f"Exception text:{exception.response.text}")
class QuickstartUser(HttpUser):
wait_time = between(1, 5)
@task
def hello_API(self):
self.client.post("/API/PATH",
json={},
headers = {}
)
如何啟動
docker-compose up --scale worker=5