手把手搭建一个压测脚本

这篇具有很好参考价值的文章主要介绍了手把手搭建一个压测脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 背景

        在业务开发完成,并且功能测试也正常,接下来就需要接口性能进行测试,也叫压力测试,即对接口进行极限施压,找到接口瓶颈。对于一般接口,需保证请求的耗时在300ms左右最后,但一些接口涉及的业务逻辑复杂,导致耗时严重,并且用户请求量也大,因此需要对该接口进行测试,对照测试的结果修改代码进行优化,比如加缓存等等。所以,如何去测试接口性能的好坏呢?接下来就使用python来搭建一个简单的压测脚本。

2. 环境搭建

        环境包括:Python 3.11Locust

        其中Python可以去官网下载安装:Python3.11,具体的安装步骤可以百度。

        当Python安装好之后,需安装Locust包。以下是官网对于Locust的介绍。

压力测试脚本,测试,python,开发语言,压力测试,Locust

         简要地讲,Locust非常好用的压测工具。官网链接

        输入如下命令,安装Locust
压力测试脚本,测试,python,开发语言,压力测试,Locust

        安装好Locust后,编写压测的python脚本

3. 脚本文件

  • 导入包
from locust import HttpUser, task
  • 建立类对象,填入压测的接口
from locust import HttpUser, task

class LocustTest(HttpUser):

    host = "http://localhost:8084"  # host

    def on_start(self):
        print("start working")

    @task(1)
    def locust_test(self):
        header = {"Content-Type": "application/json"}
        data = {}
        print("正在请求!!!")
        self.client.post("/locust-test/print-log", data=data, headers=header)
  • 以上就是一个基本的压测脚本,在脚本中包括:
    • host:服务地址
    • header格式,data格式
    • url:"/locust-test/print-log"
    • on_start: 包里自带方法,在脚本启动时执行。
    • 最重要的一点,要在方法上加上@task注解,括号里面的数据是一个权重,权重搞,压测的请求就分配的愈多,在对多个接口测试时有用,单个不起重要,毕竟就一个接口。
  • 脚本运行的命令:locust -f *.py(脚本的名字)

4. 压力测试demo

  • 搭建后台服务,并启动
@Slf4j
@RestController()
@RequestMapping("/locust-test")
public class LocustTestController {

    @PostMapping("/print-log")
    public void locustTest(){
        log.info("locustTest...."); // 接口访问后,打印一条日志。
    }
}
  • 启动脚本

压力测试脚本,测试,python,开发语言,压力测试,Locust

  • 浏览器输入地址:http://localhost:8089进入压测的监控界面
    • 在界面填入,用户的总量、每秒增加的用户数,点start swarming即可进入监控界面

压力测试脚本,测试,python,开发语言,压力测试,Locust

  • 监控界面展示
    • 目前共有30个并发,请求量每秒达到10447

压力测试脚本,测试,python,开发语言,压力测试,Locust

  • 后台服务日志打印

压力测试脚本,测试,python,开发语言,压力测试,Locust

  • 其他的监控数据
    压力测试脚本,测试,python,开发语言,压力测试,Locust

  • 压测数据下载

压力测试脚本,测试,python,开发语言,压力测试,Locust

5. 结尾

        以上就是利用PythonLocust的包实现了接口的压力测试。搭建非常的方便,并发数量方便可控制、各项数据展示非常清晰。如果有时间,可以本地搭建,测试本机能承受的最高压力喔。文章来源地址https://www.toymoban.com/news/detail-643893.html

到了这里,关于手把手搭建一个压测脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 一文2000字从0到1手把手教你jmeter分布式压测

    一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)是有限的 由于 Jmeter 是 Java 应用, 对 CPU 和内存的消耗较大 ,在需要模拟大量并发用户数时,单机很 容易出现 JAVA 内存溢出的错误 ,导致测试脚本本身就有瓶颈 Java 应用的 jvm 堆内存 he

    2024年02月05日
    浏览(8)
  • (一)手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核

    (一)手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核

    1.1 如何下载ARM DesignStart Cortex-M3相关文件 ​ 关于ARM DesignStart计划的介绍:ARM DesignStart计划——私人定制一颗ARM处理器 - 知乎 (zhihu.com)。 ​ 在arm Developer官网[Arm Developer](https://developer.arm.com/downloads)右上方的Downloads中搜索ARM DesignStart Cortex-M3第一个即是FPGA上定制的Cortex-M3软核IP。

    2024年02月04日
    浏览(9)
  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

    【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

    聚沙成塔——每天进步一点点,大家好我是几何心凉,不难发现越来越多的前端招聘JD中都加入了uni-app 这一项,它也已经成为前端开发者不可或缺的一项技能了,所以凉哥为大家推出 聚沙成塔【45天玩转uni-app】 专栏,帮助大家对 uni-app 进行学习和理解,uni-app可以通过一套代

    2023年04月23日
    浏览(10)
  • 手把手教你用Python编写邮箱脚本引擎

    手把手教你用Python编写邮箱脚本引擎

    版权声明:原创不易,本文禁止抄袭、转载需附上链接,侵权必究! 邮箱是传输信息方式之一,个人,企业等都在使用,朋友之间发消息,注册/登录信息验证,订阅邮箱,企业招聘,向客户发送消息等都是邮箱的使用场景;邮箱有两个较重要的协议:SMTP和POP3,均位于OSI7层

    2024年02月06日
    浏览(38)
  • 手把手教你搭建微信聊天机器人系列(一):文心一言(百度千帆ERNIE-Bot大模型)API测试

    手把手教你搭建微信聊天机器人系列(一):文心一言(百度千帆ERNIE-Bot大模型)API测试

            今年年初chatgpt大火,国产gpt文心一言也提供了内测服务,大家可以去访问官网申请体验。文心一言APP上的功能更加强大,可以看这个测评文章。作为程序猿的我们,想接入文心一言的能力,比如开发一个聊天机器人,要怎么做呢?百度在其开发者平台开放了大模

    2024年02月07日
    浏览(9)
  • 手把手教你用Python编写配置脚本引擎(福利篇)

    手把手教你用Python编写配置脚本引擎(福利篇)

    版权声明:原创不易,本文禁止抄袭、转载需附上链接,侵权必究! 配置信息初始化 定义配置引擎类和初始化方法,其中有两个属性,配置实例对象及配置文件路径: 将配置信息写入到配置文件中,该方法有三个形参,category(配置信息类别),name(配置字段名称),value(配置字

    2024年02月06日
    浏览(40)
  • 【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

    【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

    Python是一种 流行 的高级编程语言,具有易于学习和使用的特性,被广泛应用于各种领域。 简单易学 :Python的语法清晰简洁,易于理解和学习。与其他编程语言相比,Python的语法设计非常直观,使得编程新手也能快速上手。 强大的标准库和丰富的第三方库 :Python拥有一个庞

    2024年02月04日
    浏览(298)
  • Ubuntu开机自启动脚本+设置(手把手教程,包教包会)

    Ubuntu开机自启动脚本+设置(手把手教程,包教包会)

    一、写一个脚本 在 Documents 文件夹(随意放在你习惯的位置)中建立一个init.sh脚本,写上开机后需要执行的动作 init.sh内容为(这是我开机后需要执行的动作,比如进到我的gopath文件夹中执行main文件,学习go语言的懂得都懂。如果是python文件,可以写成python test.py ,反正当作

    2024年02月04日
    浏览(10)
  • 手把手实现一个lombok

    手把手实现一个lombok

    什么是JSR ? JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。 有超过300的JSR。一些更为明显的JSRs包括: 的JSR# 规格或技术 1 实时规范为Jav

    2023年04月23日
    浏览(14)
  • WebSocket---搭建与使用(手把手)

    WebSocket---搭建与使用(手把手)

    WebSocket是一种在客户端和服务器之间进行实时双向通信的协议。与传统的HTTP请求-响应模式不同,WebSocket允许 服务器主动向客户端发送消息 ,而不需要客户端发起请求。这种实时通信的特性使得WebSocket非常适合于需要实时更新数据的应用,如聊天室、实时游戏、股票市场等。

    2024年02月02日
    浏览(4)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包