压测工具之Locust

前言

  说起压测,我就用过Jmeter,而且仅是简单使用,好用性能强大,最近接触了一个python提供的压测框架Locust,翻译为蝗虫,蝗虫过之,寸草不生,哈哈哈,我感觉很贴切。
首先,我们分析一下市面上几种工具的特性。

\LoadRunnerJmeterLocust
授权方式商业收费开源免费开源免费
开发语言C/JavaJavaPython
测试脚本形式C/JavaGUIPython
并发机制进程/线程线程协程
单机并发能力
分布式压力支持支持支持
资源监控支持不支持不支持
报告与分析完善简单图表简单图表
支持二次开发不支持支持支持
并发方式线程线程协程
  我认为最适合程序员的当然是Locust,脚本语言快速开发,可玩性高,自由发挥,甚至可以用来干坏事,哈哈哈哈,不用记繁琐的页面操作,支持二次开发,最关键的是它使用的协程,这个减少了线程的资源耗费,适合我这种只有低端笔记本的选手。

Locust安装

Locust官网地址,具体安装步骤可以参考。
  我是搭建在一个阿里云服务器上,当然是需要python环境的,如果你的centos需要安装python环境可以参考我的另一篇帖子Centos安装Python3.8详细教程
接下来使用pip或者pip3安装locust

pip3 install locust

我已经装好了,因此显示已经存在如下图。实际安装情况也不慢。除此之外,还还可以直接去git上面下载zip包,那种方式没有尝试过,有兴趣的朋友可以去试试。在这里插入图片描述
使用命令查看安装是否成功,显示下图则表示已经安装成功。

locust -V

显示版本号2.6.0
在这里插入图片描述

测试脚本准备

  本来想自己写个jar包扔上去做测试,一看机器上面没有装jdk,我又懒了。。。。后来从网上找了个demo,访问百度的接口。脚本里面启动命令加了访问地址,这里不做赘述,都是很简单的命令,请求直接使用request类库,帖子能看到这一步的不会没有用过吧!!!

import time
from locust import HttpUser, task, between, events
import urllib3
from locust.contrib.fasthttp import FastHttpLocust
urllib3.disable_warnings()


@events.test_start.add_listener
def on_test_start(**kwargs):
    print('===测试最开始提示===')


@events.test_stop.add_listener
def on_test_stop(**kwargs):
    print('===测试结束了提示===')


class TestTask(HttpUser):
    wait_time = between(1, 5)
    # host = 'https://www.baidu.com'

    def on_start(self):
        print('这是SETUP,每次实例化User前都会执行!')

    @task(1)
    def getBaidu(self):
        self.client.get(url="/", verify=False)

    def on_stop(self):
        print('这是TEARDOWN,每次销毁User实例时都会执行!')

# class MyLocust(FastHttpLocust):
#     task_set = TestTask
#     min_wait = 1000
#     max_wait = 60000
if __name__ == "__main__":
    import os

    os.system("locust -f locustDemo1.py --host=https://www.baidu.com")

将脚本上传至服务器。然后运行。

python3 locustDemo1.py

启动效果如下图,并且已经给出了ui页面的访问方式,机器http://ip:8089/即可。
在这里插入图片描述
在这里插入图片描述

到这里,Locust脚本已经跑了起来。页面也很直观,要求输入并发用户数量,每秒产生用户数量,host(刚才已经指定)。然后点击start就开始了压测。

Locust压测指标简介

  进来默认展示的是压测报告
在这里插入图片描述

字段解释
Type请求类型
Name请求路径
requests当前请求的数量
fails当前请求失败的数量
Median中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值
Average所有请求的平均响应时间,毫秒
Min请求的最小的服务器响应时间,毫秒
Max请求的最大服务器响应时间,毫秒
Content Size单个请求的大小,单位字节
reqs/sec每秒钟请求的个数

切换至图表页面还能查看实时的折现图、包含请求趋势、响应时间、并发用户数等。
每秒请求数量

响应时间
并发用户数量

当然,还提供了查看失败请求的页面、下载请求统计数量的页面。这些对于程序员做一写简单的压力测试完全够用。爱了爱了。

  • 22
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Locust是一款用于进行负载和压力测试的开源工具,可以用于测试各种类型的应用程序和协议,包括gRPC。gRPC是一款高性能、跨语言、开源的远程过程调用(RPC)框架,可以用于构建可靠和高效的分布式系统。 要使用Locust进行gRPC压测,需要先安装Locust,并根据测试需求编写相应的脚本。在脚本中,需要定义gRPC的请求和响应,以及压力测试的行为和逻辑。 首先,需要导入必要的库和模块,如grpc、locust等。然后,定义一个gRPC客户端类,用于发送gRPC请求和处理响应。在该类中,可以编写请求和响应的具体逻辑,包括请求参数、协议格式等。 接下来,定义一个Locust的用户类,用于模拟并发访问gRPC服务。该类需要继承Locust的User类,并实现相关的方法,如on_start、on_stop等。在on_start方法中,可以初始化gRPC客户端并建立连接;在on_stop方法中,可以关闭连接和清理资源。 最后,编写一个Locust的测试类,用于配置并运行压测任务。在该类中,需要定义并配置相关的性能参数,如并发用户数、每秒请求数等。然后,启动Locust进行测试,可以通过Web界面监控测试的进程和结果。 总结来说,通过使用Locust进行gRPC压测,可以方便地模拟并发访问gRPC服务,验证其性能和稳定性。通过编写相应的脚本和配置相关参数,可以实现多样化的压测场景和测试需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码大师麦克劳瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值