91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes中如何實現分布式負載測試Locust

發布時間:2021-12-24 16:12:32 來源:億速云 閱讀:151 作者:小新 欄目:云計算

這篇文章主要介紹了kubernetes中如何實現分布式負載測試Locust,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一: 前言

  本文介紹如何在Kubernetes集群中對一個應用進行分布式測試,sample-webapp是一個簡單的web測試應用。測試工具使用Locust.

二:Locust 介紹

  Locust是一個用于可擴展的,分布式的,性能測試的,開源的,用Python編寫框架/工具.

在Locust測試框架中,測試場景是采用純Python腳本進行描述的。對于最常見的HTTP(S)協議的系統,Locust采用Python的requests庫作為客戶端,使得腳本編寫大大簡化,富有表現力的同時且極具美感。而對于其它協議類型的系統,Locust也提供了接口,只要我們能采用Python編寫對應的請求客戶端,就能方便地采用Locust實現壓力測試。從這個角度來說,Locust可以用于壓測任意類型的系統。

  在模擬有效并發方面,Locust的優勢在于其摒棄了進程和線程,完全基于事件驅動,使用gevent提供的非阻塞IO和coroutine來實現網絡層的并發請求,因此即使是單臺壓力機也能產生數千并發請求數;再加上對分布式運行的支持,理論上來說,Locust能在使用較少壓力機的前提下支持極高并發數的測試。
Locust腳本示例:

  1. from locust import HttpLocust, TaskSet, task


  2. class WebsiteTasks(TaskSet):

  3.     def on_start(self):

  4.         self.client.post("/login", {

  5.             "username": "test",

  6.             "password": "123456"

  7.         })


  8.     @task(2)

  9.     def index(self):

  10.         self.client.get("/")


  11.     @task(1)

  12.     def about(self):

  13.         self.client.get("/about/")


  14. class WebsiteUser(HttpLocust):

  15.     task_set = WebsiteTasks

  16.     host = "http://debugtalk.com"

  17.     min_wait = 1000

  18.     max_wait = 5000

在這個示例中,定義了針對http://debugtalk.com網站的測試場景:先模擬用戶登錄系統,然后隨機地訪問首頁(/)和關于頁面(/about/),請求比例為2:1;并且,在測試過程中,兩次請求的間隔時間為1~5秒間的隨機值。

三:部署測試WEB應用

sample-webapp-controller.yaml

  1. kind: ReplicationController

  2. apiVersion: v1

  3. metadata:

  4.   name: sample-webapp

  5.   namespace: kube-system

  6.   labels:

  7.     name: sample-webapp

  8. spec:

  9.   selector:

  10.     name: sample-webapp

  11.   replicas: 1

  12.   template:

  13.     metadata:

  14.       labels:

  15.         name: sample-webapp

  16.     spec:

  17.       containers:

  18.       - name: sample-webapp

  19.         image: index.tenxcloud.com/jimmy/k8s-sample-webapp:latest

  20.         ports:

  21.         - containerPort: 8000

sample-webapp-service.yaml

  1. kind: Service

  2. apiVersion: v1

  3. metadata:

  4.   name: sample-webapp

  5.   namespace: kube-system

  6.   labels:

  7.     name: sample-webapp

  8. spec:

  9.   ports:

  10.     - port: 8000

  11.   selector:

  12.     name: sample-webapp

kubectl create -f sample-webapp-controller.yaml
kubectl create -f sample-webapp-service.yaml

四:部署Locust

locust-master-controller.yaml

  1. kind: ReplicationController

  2. apiVersion: v1

  3. metadata:

  4.   name: locust-master

  5.   namespace: kube-system

  6.   labels:

  7.     name: locust

  8.     role: master

  9. spec:

  10.   replicas: 1

  11.   selector:

  12.     name: locust

  13.     role: master

  14.   template:

  15.     metadata:

  16.       labels:

  17.         name: locust

  18.         role: master

  19.     spec:

  20.       containers:

  21.         - name: locust

  22.           image: index.tenxcloud.com/jimmy/locust-tasks:latest

  23.           env:

  24.             - name: LOCUST_MODE

  25.               value: master

  26.             - name: TARGET_HOST

  27.               value: http://sample-webapp:8000

  28.           ports:

  29.             - name: loc-master-web

  30.               containerPort: 8089

  31.               protocol: TCP

  32.             - name: loc-master-p1

  33.               containerPort: 5557

  34.               protocol: TCP

  35.             - name: loc-master-p2

  36.               containerPort: 5558

  37.               protocol: TCP

locust-master-service.yaml

  1. kind: Service

  2. apiVersion: v1

  3. metadata:

  4.   name: locust-master

  5.   namespace: kube-system

  6.   labels:

  7.     name: locust

  8.     role: master

  9. spec:

  10.   ports:

  11.     - port: 8089

  12.       targetPort: loc-master-web

  13.       protocol: TCP

  14.       name: loc-master-web

  15.     - port: 5557

  16.       targetPort: loc-master-p1

  17.       protocol: TCP

  18.       name: loc-master-p1

  19.     - port: 5558

  20.       targetPort: loc-master-p2

  21.       protocol: TCP

  22.       name: loc-master-p2

  23.   selector:

  24.     name: locust

  25.     role: master

locust-worker-controller.yaml

  1. kind: ReplicationController

  2. apiVersion: v1

  3. metadata:

  4.   name: locust-worker

  5.   namespace: kube-system

  6.   labels:

  7.     name: locust

  8.     role: worker

  9. spec:

  10.   replicas: 1

  11.   selector:

  12.     name: locust

  13.     role: worker

  14.   template:

  15.     metadata:

  16.       labels:

  17.         name: locust

  18.         role: worker

  19.     spec:

  20.       containers:

  21.         - name: locust

  22.           image: index.tenxcloud.com/jimmy/locust-tasks:latest

  23.           env:

  24.             - name: LOCUST_MODE

  25.               value: worker

  26.             - name: LOCUST_MASTER

  27.               value: locust-master

  28.             - name: TARGET_HOST

  29.               value: http://sample-webapp:8000

kubectl create -f locust-master-controller.yaml
kubectl create -f locust-master-service.yaml
kubectl create -f locust-worker-controller.yaml

五:配置Traefik

  1. - host: locust.donkey

  2.     http:

  3.       paths:

  4.       - path: /

  5.         backend:

  6.           serviceName: locust-master

  7.           servicePort: 8089

kubectl replace -f ingress.yaml

六:執行測試
訪問http://locust.donkey/  設置測試參數,進行測試
kubernetes中如何實現分布式負載測試Locust

感謝你能夠認真閱讀完這篇文章,希望小編分享的“kubernetes中如何實現分布式負載測試Locust”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涡阳县| 嵊州市| 渭南市| 西林县| 伊吾县| 遵化市| 鄂州市| 福泉市| 玛多县| 道孚县| 措美县| 云龙县| 嘉鱼县| 齐河县| 湟中县| 湖北省| 本溪市| 花垣县| 托克托县| 米泉市| 巍山| 昌都县| 玛沁县| 三亚市| 长沙县| 聂拉木县| 伊金霍洛旗| 洮南市| 兴山县| 贡嘎县| 商南县| 敖汉旗| 巨野县| 怀远县| 清流县| 湘潭市| 茌平县| 克东县| 游戏| 新和县| 富顺县|