压力测试(QPS)及测试工具Locust

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

压力测试:

通常指的是确定接口或服务能够处理的最大请求量(吞吐量)和并发用户数,同时保持合理的响应时间和稳定性。

性能目标

  • 最大吞吐量:系统每秒可以处理的请求数。
  • 最大并发用户数:系统可以同时支持的用户数。
  • 响应时间:系统响应请求的时间。
  • 稳定性和可靠性:在高负载下系统的稳定性。

QPS( Queries Per Second,即每秒查询数)

在进行性能测试时,通常会逐步增加并发用户数(或请求频率),以便找到接口或系统的最大QPS值。这个过程中,您会观察到系统的响应时间和请求失败率随着并发量的增加而变化。确定QPS的最大值通常涉及到平衡性能指标和系统的稳定性。

如何确定QPS的最大值

  1. 响应时间:随着请求量的增加,响应时间可能会增长。您需要确定一个可接受的最大响应时间阈值。当响应时间超过这个阈值时,即使系统还能处理更多请求,也不应该继续增加负载。
  2. 错误率:随着负载的增加,错误率(包括超时、5XX状态码等)可能会上升。通常,您需要设定一个错误率阈值(例如1%),当错误率超过这个阈值时,可以认为已经达到了系统的性能极限。
  3. 资源利用率:监控系统的资源利用率(如CPU、内存、网络带宽等)也很重要。资源饱和可能导致性能下降和错误率上升。资源利用率接近或达到100%通常意味着接近系统极限。

综上考虑确定最大QPS:当响应时间超过预定阈值、错误率升高或资源利用率达到饱和时,即认为找到了系统的最大QPS。这是系统在保持良好性能和稳定性的前提下能够处理的最高请求数。

计算QPS

QPS 的计算公式相对简单:

QPS = 总请求次数 / 请求持续时间()

例如,如果一个服务在 10 秒内处理了 2000 个请求,那么:

QPS = 2000 / 10 = 200

这意味着该服务每秒平均处理 200 个请求。

在压力测试中,1个用户每秒请求10000次,与10000个用户每秒请求1次,有什么不同吗?

虽然在表面上看似都产生了每秒 10000 次的请求量,但实际对系统的影响和测试的含义有显著不同:

1. 并发性和资源使用

  • 1个用户请求 10000 次:这种情况下,请求是顺序发出的,即使以非常快的速度,也只有一个请求的处理在进行。这种情况测试的是服务对单一用户的高频率请求的处理能力。服务器资源(如数据库连接)可能主要集中在处理这一个用户的请求上,不一定能反映出在多用户并发情况下的资源竞争和分配问题。
  • 10000个用户各请求1次:这种情况下,请求是并发发出的,服务器需要同时处理来自一万个不同用户的请求。这种情况测试的是服务的并发处理能力和系统资源(如数据库连接池、内存、CPU)在大量并发请求下的表现。这更接近真实世界的使用场景,能够暴露出服务在高并发下可能遇到的性能瓶颈和问题

2. 会话和状态管理

  • 在一个用户高频请求的场景中,如果服务涉及到会话或状态管理,那么这些状态可能会在连续的请求之间保持,影响测试结果。
  • 在多用户并发请求的场景中,服务需要管理和维护来自多个用户的会话和状态,这可能揭示出在会话管理、状态一致性等方面的问题。

3. 网络和负载平衡

  • 单用户高频请求可能无法充分测试网络的负载均衡和连接限制,因为所有请求可能都通过相同的网络路径和连接进行。
  • 多用户并发请求则可能涉及到更多的网络路径和连接,能够测试负载均衡器在分配请求到不同服务器或服务实例时的效果,以及服务在处理来自不同源的请求时的网络性能。

虽然两种情况下每秒的请求量相同,但从测试的目的和重点来看,它们反映了系统不同方面的性能和扩展性。多用户并发请求的测试更能反映真实世界中服务的并发处理能力和资源管理效率,因此在进行压力测试和性能评估时,应该考虑到测试场景与真实使用场景的匹配度。

压力测试工具Locust

一个用 Python 编写的开源负载测试工具,易于编写测试脚本,支持模拟数百万用户并发。

1. 安装 Locust

pip install locust

2. 编写 Locust 测试脚本

创建一个名为 locustfile.py 的 Python 文件,并在文件中定义用户行为和任务。以下是一个基本的测试脚本示例,它模拟用户访问一个 HTTP API:

from locust import HttpUser, between, task
import json
import base64

global pic_base64
img_path = './ocr/test_images/1.jpg'
with open(img_path,'rb') as pic:
    pic_base64 = str(base64.b64encode(pic.read()),encoding='utf-8')


class WebsiteUser(HttpUser):
    host = "http://localhost:8080"
    wait_time = between(1, 5)

    @task
    def ocr_task(self):
        # data = {"img_base64": pic_base64}
        data = {"key": ["image"], "value": [pic_base64]}
        headers = {'Content-Type': 'application/json'}
        self.client.post("/ocr/prediction", data=json.dumps(data), headers=headers)

3. 配置测试参数并运行 Locust

在包含 locustfile.py 的目录下,打开终端并输入以下命令启动 Locust:

locust

这将启动 Locust 的 web 界面,默认情况下访问地址是 http://localhost:8089 。

4. 在 Locust Web 界面中启动测试

打开浏览器,访问 http://localhost:8089 ,然后输入以下信息:

  • Number of users:要模拟的用户总数。
  • Spawn rate:每秒生成的用户数。这决定了用户以多快的速率启动。
  • Host:被测试的网站或应用的基础 URL。
    填写完成后,点击 “Start Swarming” 按钮开始测试。

参考链接:https://blog.csdn.net/yuan_ahui/article/details/126272465文章来源地址https://www.toymoban.com/news/detail-847078.html

到了这里,关于压力测试(QPS)及测试工具Locust的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 软件测试工程师使用Jmeter工具做接口压力测试(Jmeter配置随机生成手机号)

    背景:性能测试的数据准备时很多情况需要产生一批新的数据,我们这次主要讲述的是如何产生随机的手机号,以用户注册接口为场景、生成随机手机号作为账号进行并发测试。 JMeter压力测试中设置线程组的线程数,即执行时的并发用户数,适用于单个线程组的并发测试。

    2023年04月19日
    浏览(80)
  • Python性能测试工具Locust入门

    1、性能测试该怎么做? 利用工具模拟真实用户操作。 2、性能测试基础: 性能:事物的性质和能效 --效率性能 (时间/资源/容量) 思考:如何评价软件系统的性能? 快慢:衡量系统的处理效率 (响应时间) 多少:衡量系统的处理能力(单位时间内,能处理多少个事物) 3、性

    2024年02月07日
    浏览(59)
  • 性能测试工具locust压测介绍

    官方文档:https://docs.locust.io/en/stable/index.html 1、初识locust         Locust 完全基于Python 编程语言,采用python 编写压测脚本,且所有请求完全基于requests库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。locust是一个

    2024年02月07日
    浏览(71)
  • 1-Locust性能测试工具介绍与安装

    locust是一个开源的压测工具,其官网地址是Locust - A modern load testing framework,通过编写Python代码,可以轻松实现百万级的并发,相对于我们熟悉的Jmeter来说,其对压测机的要求更低,而且使用locust和Python协程可以在一个User中实现多个api同时请求,更真实地模拟用户在前端页面

    2024年02月15日
    浏览(45)
  • Locust:分布式负载测试工具的利器

    引言: 在软件开发过程中,负载测试是确保系统能够承受高并发访问的重要环节。然而,传统的负载测试工具往往无法满足大规模并发测试的需求。为了解决这一问题,Locust应运而生。本文将介绍Locust的特点、使用方法以及其在分布式负载测试中的应用,帮助读者了解并掌握

    2024年02月03日
    浏览(39)
  • 【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?

    目录 前言 wrk 优点 缺点 jmeter 优点 缺点 locust 优点 缺点 总结 资料获取方法 当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢? 今天,笔者将根据自己使用经验,针对jmeter、locust、wrk和loadrunner常用的性能测试工具进行简单介

    2024年02月14日
    浏览(55)
  • 性能测试工具 Locust + Boomer In Docker

    目录 前言: 背景 启动 Locust-master Boomer 调试模式启动 boomer locust worker 模式启动 get 请求 post 请求 指定请求头 直接使用 curl 命令 动态读取 csv --json-value-type 说明 Locust 是一种开源的性能测试工具,可以帮助我们快速地进行网站、应用程序等的性能测试和压力测试。Boomer 是一种

    2024年02月15日
    浏览(45)
  • 什么是软件压力测试?软件压力测试工具和流程有哪些?

    软件压力测试 一、含义: 软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,以及在高峰期或高负载情况下系统的响应

    2024年02月11日
    浏览(58)
  • 开发工具-压力测试工具 ab

    在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 计算公式:

    2024年02月04日
    浏览(46)
  • Jmeter-压力测试工具

    1s内发送大量请求,模拟高QPS,用以测试网站能承受的压力有多大 Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi 或者直接用这个提供好的旧版本: 链接:https://pan.baidu.com

    2024年02月13日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包