【性能测试】分布式压测之locust和Jmeter的使用

news2025/1/19 8:17:28

受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要引入分布式压测

分布式压测原理:

一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。

  1. 选择一台作为调度机(MASTER),其他机器作为执行机(SLAVE)
  2. 执行完成执行机会把所有数据上传汇总到调度机

LOCUST

首先要确保调度机和执行机上都已经有了测试脚本

第二、cmd启动调度机locust -f <脚本名.py> --master

第三、cmd启动执行机locust -f <脚本名.py> --worker --master-host=xxx.xxx.x.x

第四、在网页运行http://localhost:8089/,locust默认8089端口,就可以让调度机操作执行机了

Jmeter

这是一款绿色软件,所以直接复制到测试机上就可使用了同时还保证了Jmeter版本是一致的(JDK版本也需要一致)

第一步配置执行机配置:

  1. 修改jmeter.properties
    • server_port=1099
    • server.rmi.localport=1099(保持和上面设置的端口号一致)
    • server.rmi.ssl.disable=true(关闭ssl)
  2. 修改jmeter-server
    • RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(本机ip)
  3. 启动执行机上bin目录下的jmeter-server(windows启动jmeter-server.bat),并记录下ip和port

第二步配置调度机的配置:

  1. 修改jmeter.properties
    • server.rmi.ssl.disable=true(关闭ssl)
    • remote_hosts=localhost:1099(与执行机配置的ip和port对应,如果存在多个用逗号隔开)

 这样就完成了让调度机控制执行机

那我们为什么要这么高的并发数,或者说我们怎么去确定我们的并发数呢?

 当然所有指标都可以按需求来,那需求中的并发数怎么来的呢?或者说如果没有需求指标呢?

1.稳定测试的并发量(均值)

  PV:(page view)页面访问量,也就是每打开一次页面PV计数+1

  UV:(unique visitor)唯一访问用户数,用来衡量真实的网站用户数

  一般用UV来统计用户活跃数,用PV来统计用户访问页面的频率

  举个例子:假如业务部门告知我们一天系统有4w个请求,那么我想知道需要多少的并发数

  普通计算公式(根据每天访问):TPS(并发数/每秒) = 总请求数 / 总时间,通过这个公式我们可以计算得到 TPS = 40000请求量 / (24 * 3600秒)=0.46请求数/秒,那么我们在测试环境对系统进行性能测试,只需要0.48个请求就可以满足需要

  二八原则计算方法(根据每天访问):普通计算公式可能不一定可以代表线上绝大多数情况,因为可能存在被低访问平均拉低数据,所以使用二八原则(80%请求在20%的时间完成) = 总请求数 *0.8 / 总时间*0.2,那么通过这个公式我们计算出1.85请求量/秒就可以得到并发数

  注:当然有细分数据那更好了,可以更准备知道更准确的有效时间和请求

2.压力测试的并发量(极值)

  举个例子:订单最高峰在1个小时内有7200个订单

  计算压力测试的并发数:TPS = 峰值请求数 / 峰值的时间 * 系数 ,系数根据自己对系统要求不同决定,比如系数是2,那么我们通过公式可以计算到7200 / 3600 * 2 = 4请求数/秒,4个请求数就可以满足需要 

2024最新Jmeter接口测试从入门到精通(全套项目实战教程)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小白水平理解面试经典题目LeetCode 1025 Divisor Game【动态规划】

1025 除数游戏 小艾 和 小鲍 轮流玩游戏&#xff0c;小艾首先开始。 最初&#xff0c;黑板上有一个数字 n 。在每个玩家的回合中&#xff0c;该玩家做出的动作包括&#xff1a; 选择任意 x&#xff0c;使 0 < x < n 和 n % x 0 。将黑板上的数字 n 替换为 n - x 。 此…

代码随想录day25--回溯的应用4

LeetCode491.非递减子序列 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;…

[Flink02] Flink架构和原理

这是继第一节之后的Flink入门系列的第二篇&#xff0c;本篇主要内容是是&#xff1a;了解Flink运行模式、Flink调度原理、Flink分区、Flink安装。 1、运行模式 Flink有多种运行模式&#xff0c;可以运行在一台机器上&#xff0c;称为本地&#xff08;单机&#xff09;模式&am…

相机图像质量研究(34)常见问题总结:图像处理对成像的影响--拖影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

如何使用Sora?Sora小白教程一文通

如果需要使用Sora或者GPT4&#xff0c;请参考文章&#xff1a;如何使用Sora&#xff1f;Sora小白教程一文通 什么是Sora Sora是OpenAI于2024年2月18日凌晨发布的新的文生视频大模型&#xff0c;名为 “ Sora ”。 从OpenAI在官网展示的Sora生成视频的效果来看&#xff0c;在生…

修改vue-layer中title

左侧目录树点击时同步目录树名称 试了很多方法 layer.title(新标题&#xff0c;index)不知道为啥不行 最后用了获取html树来修改了 watch: {$store.state.nowTreePath: function(newVal, oldVal) {if (document.querySelectorAll(".lv-title") && document.q…

Quartz---串行执行、JobDataMap持久化

1.Quartz串行执行 在Quartz中&#xff0c;作业&#xff08;Job&#xff09;默认是以并行方式执行的&#xff0c;这意味着如果调度器&#xff08;Scheduler&#xff09;有多个线程可用&#xff0c;并且满足触发条件&#xff0c;那么多个作业可能会同时执行。然而&#xff0c;有时…

有什么办法解决SQL注入问题

随着互联网的普及和数字化进程的加速&#xff0c;Web攻击已经成为网络安全领域的一大威胁。Web攻击不仅可能导致个人隐私泄露、财产损失&#xff0c;还可能对企业和国家的安全造成严重影响。下面德迅云安全就分享一种常见的web攻击方式-SQL注入&#xff0c;了解下什么是SQL注入…

【VTKExamples::GeometricObjects】第一期 TextActor

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例TextActor,并解析接口vtkTextActor,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. TextActor 该样例有两…

Postman接口测试之断言

一、断言 在 postman 中我们是在Tests标签中编写断言&#xff0c;同时右侧封装了常用的断言&#xff0c;当然 Tests 除了可以作为断言&#xff0c;还可以当做后置处理器来编写一些后置处理代码&#xff0c;经常应用于&#xff1a; 【1】获取当前接口的响应&#xff0c;传递给…

图像处理之《隐写网络的隐写术》论文阅读

一、文章摘要 隐写术是一种在双方之间进行秘密通信的技术。随着深度神经网络(DNN)的快速发展&#xff0c;近年来越来越多的隐写网络被提出&#xff0c;并显示出良好的性能。与传统的手工隐写工具不同&#xff0c;隐写网络的规模相对较大。如何在公共信道上秘密传输隐写网络引起…

Django后端开发——模型层及ORM介绍

文章目录 参考资料Django配置MySQL安装mysqlclient创建数据库进入数据库的操作可能遇到的问题及解决方案Pycharm配置settings.py 模型![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c83753397bf6481d8defde26537903bf.png)ORM介绍示例终端&#xff1a;settings.py…

JAVA面试框架篇

1. Spring refresh 流程 要求 掌握 refresh 的 12 个步骤 Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法&#xff0c;负责初始化 ApplicationContext 容器&#xff0c;容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法&#x…

Quartz---JobDataMap使用的两种方式

任务调度执行原理图&#xff1a; JobDataMap的使用 JobDataMap是Quartz调度器中的一个重要组件&#xff0c;主要用于存储和传递与作业&#xff08;Job&#xff09;相关的数据。它是一个实现了Java Map接口的对象&#xff0c;可以用来保存一系列的序列化的对象。这些对象在作业执…

基于TensorFlow的LibriSpeech语音识别

一、引言 随着人工智能技术的日益成熟&#xff0c;深度学习在语音识别领域取得了显著的突破。本博客将介绍如何使用TensorFlow框架&#xff0c;结合LibriSpeech数据集&#xff0c;构建一个高效的语音识别系统。 目录 一、引言 二、环境准备 为了运行本示例代码&#xff0c;…

冒泡排序:原理、实现与性能分析

引言 在编程世界中&#xff0c;排序算法是不可或缺的一部分。冒泡排序作为最基本的排序算法之一&#xff0c;虽然其效率并不是最高的&#xff0c;但其实现简单、易于理解的特点使得它成为学习和理解排序算法的入门之选。本文将详细介绍冒泡排序的原理、实现方法以及性能分析&a…

java实现排序算法(上)

排序算法 冒泡排序 时间和空间复杂度 要点 每轮冒泡不断地比较比较相邻的两个元素,如果它们是逆序的,则需要交换它们的位置下一轮冒泡,可以调整未排序的右边界,减少不必要比较 代码 public static int[] test(int[] array) {// 外层循环控制遍历次数for (int i 0; i <…

政安晨:【完全零基础】认知人工智能(二)【超级简单】的【机器学习神经网络】—— 底层算法

如果小伙伴第一次看到这篇文章&#xff0c;可以先浏览一下我这个系列的上一篇文章&#xff1a; 政安晨&#xff1a;【完全零基础】认知人工智能&#xff08;一&#xff09;【超级简单】的【机器学习神经网络】 —— 预测机https://blog.csdn.net/snowdenkeke/article/details/…

mac东西拷不进硬盘怎么回事 mac东西拷不进硬盘怎么办 mac硬盘读不出来怎么解决 mac拷贝不了东西到u盘

有时候我们在使用mac的过程中&#xff0c;可能会遇到一些问题&#xff0c;比如mac东西拷不进硬盘。这是一种很常见的情况&#xff0c;但是会影响我们的工作和生活。那么&#xff0c;mac东西拷不进硬盘是怎么回事呢&#xff1f;mac东西拷不进硬盘又该怎么办呢&#xff1f;本文将…

【设计模式】4、策略模式

文章目录 一、问题二、解决方案2.1 真实世界的类比2.2 策略模式结构2.3 适用场景2.4 实现方式2.5 优缺点2.6 与其他模式的关系 三、示例代码3.1 go3.2 rust 策略模式是一种行为设计模式&#xff0c;它能定义一系列算法&#xff0c;把每种算法分别放入独立的类中&#xff0c;以是…