locust分布式压测

1.编写性能测试业务脚本,大致可以根据这个模板去编写,如果用到其他参数的话可以根据需求添加

from locust import HttpLocust,TaskSet,task
import random
 
hash_id = ['Eq1wzd','EbVNJ4','Ej8bnN','lDgRw0','E4e2gm',"EX8mdk"]
 
class ShortLinkBehavior(TaskSet):
    @task(10)
    def get_short_link(self):
        id = hash_id[random.randint(0,5)]
        api = '/'+ id
        with self.client.get(api,name="/",catch_response=True,allow_redirects=False) as response:
            if response.status_code != 302:
                response.failure('Failed!')
            else:
                response.success()
 
class WebsiteUser(HttpLocust):
    task_set = ShortLinkBehavior
    min_wait = 100
    max_wait = 1000

2.使用该脚本在主机上运行主节点

//host为压测服务的主机 主机ip为172.24.2.83
locust -f test_short_link.py --master --host=http://172.24.2.91:8081
[2020-07-03 12:26:45,214] LAPTOP-9B4P23JJ/INFO/locust.main: Starting web monitor at *:8089
[2020-07-03 12:26:45,229] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0

3.使用该脚本在备用主机运行从节点1


//host为压测服务的从节点,机器ip为172.24.2.122
locust -f test_short_link.py --slave --master-host=172.24.2.83 --host=http://172.24.2.91:8081
[2020-07-03 11:53:39,711] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0
[2020-07-03 11:53:53,872] LAPTOP-9B4P23JJ/INFO/locust.runners: Hatching and swarming 33 clients at the rate 1.666

4.使用该脚本在备用主机运行从节点2

//host为压测服务的从节点,机器ip为172.24.2.66
locust -f test_short_link.py --slave --master-host=172.24.2.83 --host=http://172.24.2.91:8081
[2020-07-03 11:53:39,711] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0
[2020-07-03 11:53:53,872] LAPTOP-9B4P23JJ/INFO/locust.runners: Hatching and swarming 33 clients at the rate 1.666

5.运行后,可在主节点查看压测信息,进入到主节点的web可视化页面http://172.24.2.83:8090,可设置虚拟用户数,分布式设置的话,是基于设置数/从节点数=每台从节点虚拟用户数

 

6.性能测试指标

  1. TPS:在术语中解释了TPS是每秒事务数,操作事务时,需要靠虚拟用户实现,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1,如果事务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了,如果某笔事务响应时间是1s,那么如果要达到1000TPS,至少需要1000个虚拟用户,可以说1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,无非是看响应时间快慢。
  2. min:最小响应时间,指的是在压测时,最短的响应时间。
  3. max:最大响应时间,指的是在压测时,最长的响应时间。
  4. avg:平均响应时间,指的是在压测时,总请求数/总响应时间=平均响应时间
  5. median:中位数响应时间,指的是在压测时,所有的响应时间取中间数,一般这个数与平均响应时间相差不大的话,相对来说服务比较稳定。一般在性能测试时,会比较关注以上的几个指标

7.其他

  1. 在压测时,尽量将搭建被测服务的机器与生产环境的机器设备保持一致,运行脚本的机器尽量选择好一点的,网络不要选择公司内部网络
  2. 在虚拟用户选择时,先从低到高选择,比如先50,100,200类似这样选择,递推虚拟用户数后,注意观察TPS有没有明显的增加或下降,查看被测服务机器的CPU,内存等信息,注意看有没有GC问题
  3. 在性能测试时,内存泄漏问题,在程序运行的一段时间,虚拟用户数达到了预设值,内存会先升高后,持续一段时间的稳定,没有明显的增加或减少,如果当虚拟用户数达到了预设值,内存还继续上升的话,可能会有GC问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值