zoukankan      html  css  js  c++  java
  • 记录一次使用locust压测的过程

    1 脚本# encoding: utf-# @Time : 2021/6/21 1:28 下午

    # @Author  : Sail
    # @File    : main.py
    # @Software: PyCharm
    import json
    
    from locust import between, HttpUser, TaskSet, task, constant
    import random
    
    class SaasTask(TaskSet):
        data=[]
        def on_start(self):
            with open("111.txt", "r") as file:
                global data
                data = file.readlines()

    @task
    def load_getdealerlist_multparam_ShopSort(self):
    pagesizes=[x for x in range(10, 20)]
    currentpages=[1,2]
    url=f"/apidealer/APIDealerToProduct/ibp/getdealerlist_multparam_ShopSort.aspx?productid={random.choice(data)}&provincesn=0&citysn=0&type=1&pagesize={random.choice(pagesizes)}&{random.choice(currentpages)}=1"
    print(url)
    with self.client.get(url=url,catch_response=True, name="getdealerlist_multparam_ShopSort") as response:
    dict = json.loads(s=response.text)
    list =dict.get("data")
    print(response.text)
    if len(list)>0:
    response.success()
    class SaasUser(HttpUser):
    host="https://xx.xxx.com"
    wait_time=between(1,2.5)
    tasks = [SaasTask]

    2、 注意的点

    1、为了避免查询全部命中缓存,chpagesize、currentpage、productid 做出了随机数,prouctid为数据导出的2万条数据,本次pagesize, currentpage分别为10-20, 1-2 的随机数,本次测试数据由有10*2*20000约等于40万条数据。
    2、代码没啥说的,不会的去官网瞅瞅, 学习成本不高,
    3、重点是思路,其实我感觉我想的应该是有点问题,本次的重点在于对比新老接口的性能查询,所以只有一个task方法,新接口压完了重新部署老接口。大佬们看到哪儿有问题的话批评指正一下。

    3、命令

    现在的命令和之前变化的还是挺多的

     locust -f main.py --master --headless -u 5000 -r 5  --csv-full-history  --csv=2.cvs  --print-stats

    -f 指定文件 ,--master 指定控制机,--headless指定非web方式。-u指定多少个用户, -r每次增加多少个, 后面的一些是用来生成cvs文件的, 但是生成的文件太乱了, 数据量太大,感觉不是很实用。

    locust -f main --worker

    指定压力机, 我控制机和压力机在用一个设备上, --master-host可以省略

    压测完的感受, 可以把控制机设置成web模式, 曲线看起来非常直观,压力机为其他机器,非ui模式看起来效果不明显。







    写的不好,有很多比我写的好的, 记录一下吧。
    
    
  • 相关阅读:
    数据结构与算法(二)(栈、队列)
    数据结构与算法(一)(数组、线性查找、二分查找)
    ssm项目中常用的上传文件
    安全防御之防xss、SQL注入、与CSRF攻击
    int i=i++;和i=++i;和i++
    关于@Autowired和@Resource注解区别
    通过idea创建Maven项目整合Spring+spring mvc+mybatis
    深入理解java虚拟机(一)
    java中栈,堆,方法区
    SpringBoot+mybatis配置pagehelper实现基础分页
  • 原文地址:https://www.cnblogs.com/sailfan/p/14918601.html
Copyright © 2011-2022 走看看