性能测试Ⅵ(总结)

news2024/10/6 18:24:06

locust:是基于Python语言的性能测试工具,它是基于协程的思想来进行设计的。Python语言是没有办法利用多核的优势,所以了Python为了解决这个问题,设计了协程,作为协程的任务,遇到IO堵塞就立刻切换。 生命是协程,协程可以简单的来说就是微线程。

locust主要做负载测试和稳定性测试,也可以做压力测试。

下载locust

下载文件

locust -f  locustfile.py

在网页中打开http://localhost:8089/

• Number of total users to simulate:设置模拟的⽤户总数

• Spawn rate (users spawned/second):每秒启动的⽤户虚拟数

• Host (e.g. http://www.example.com):被测的⽬标服务器的地址信息

Type:请求类型(也就是请求具体是那个=⽅法)

Name:请求的路径地址信息

Requests:当前已完成的请求数量

Fails:当前失败的数量

Mediam(ms): 响应时间的中位数

90%ile (ms):90%的请求响应时间

Average (ms):平均响应时间

Min (ms):最⼩响应时间

Max (ms):最⼤响应时间

Average size (bytes):平均请求的数据量

Current RPS:每秒中处理请求的数量,也就是RPS

菜单栏

New test:点击该按钮可对模拟的总虚拟⽤户数和每秒启动的虚拟⽤户数进⾏编辑;

Statistics:聚合报告

Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟⽤户数;

Failures:失败请求的展示界⾯;

Exceptions:异常请求的展示界⾯;

Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions;

Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟⽤户数;

Failures:失败请求的展示界⾯

Exceptions:异常请求的展示界⾯

Current ratio:流动比率

Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions

性能测试计划:

背景:描述具体是干什么,干这件事的前因后果

前置工作:干这件事需要有哪些准备工作

技术选型(工具):JMeter、JVM监控工具、Locust、Gradana&influxDB

测试范围:就是具体的工作内容

上传⽂件最⼤⽀持2G 测试⽅式是:

关注点:上传文件成功需要的时间;上传过程中打开jvm观察cpu变化的趋势

结果:5min上传成功且无oom,那么:

1.需要测试一个人上传多大文件会oom,比如2.2g时oom,为保险>2g的不允许上传

2.需要测试有几个人同时上传2G文件会导致oom,比如11人同时上传2g文件,发生oom,那么保险起见设置9人/10人可以同时上传2g文件,其余的采取队列排队形式处理。

支持持续发送API请求

import time

from locust import HttpUser,task,between



class QuickStartUser(HttpUser):

   host = 'http://47.95.142.233:8000'

   min_wait = 3000

   max_wait = 6000



   def login(self):

      r=self.client.post(

         url='/login/auth/',

         json={"username":"13484545195","password":"asd888"})

      return r.json()['token']



   @task

   def api(self):

      r=self.client.post(

         url='/interface/run/api/32',

         headers={'Authorization':'JWT {token}'.format(token=self.login())})

      assert r.status_code==200

性能测试关注指标:

1、时间

2、CPU与内存的变化趋势

指标:

1、系统资源:CPU与内存

2、响应时间:最小,最大,平均,中位数,90%,95%,99%

3、吞吐量

4、IOPS,连接数

5、JVM的资源变化趋势关注

测试执行过程中,需要收集数据

测试任务为100万、90万、150万的各项响应时间等数据

1、系统资源:CPU与内存

2、响应时间:最小,最大,平均,中位数,90%,95%,99%

3、吞吐量

4、IOPS,连接数

在预测工作任务时间的时候会出现一些衍生的问题,所以在做任务时间评估的时候尽可能的多要一点时间

性能测试流程(模型)

首先要做测试前期准备

  ①梳理性能的目标②性能测试的数据③性能测试场景的设计以及性能测试用例的设计

  第二步测试工具技术引入

     ①LoadRunner:HP公司研发的工业级别的性能测试工具,是收费的一款性能测试工具

     ②JMeter:100%使用Java语言研发的性能测试工具,是开源的,互联网公司基本使用的都是该性能测试工具

     ③Locust:是基于Python的协程来设计的性能测试工具,需要编写Python代码来进行性能测试

     ④Gatling:是微服务架构下高性能的性能测试工具

第三步性能测试计划

    ①明确每个性能测试的任务开始的时间和结束的时间

    ②明确每个任务的具体负责人

③明确性能测试工具

第四步是测试设计与开发

    使用选择好的工具或代码,来设计场景或编写代码来测试设计好的性能测试用例

第五步测试执行与管理,数据收集

    ①多次测试执行,收集每次性能测试的数据(系统资源:CPU和内存,数据库资源:连接数和IOPS,JVM资源:内存资源 响应时间:最大,最小,平均,中位数,90%,95%,99%,吞吐量)②数据收集后的数据可视化展示

 最后是测试分析

     实际收集的结果,来得到最终的结论:吞吐量,响应时间等等,与期望的目标进行对比,来判断是否达到目标

负载测试与压力测试有什么区别

负载测试

在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量

目的:

1、验证服务被部署的系统出现资源瓶颈的时候,服务依然能够提供产品的特性

2、找到系统的最大饱和状态,或者是最大的处理极限,为系统后续的容量规划提供参考的数据

压力测试

     该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点:

  • 检查系统在处于压力情况下时应用的性能表现
  • 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)
  • 这种方式一般用于测试系统的稳定性

性能测试通过的判断依据是什么?

测试结果的期望值

性能测试的指标有哪些?

1、系统资源:CPU与内存

2、响应时间:最小,最大,平均,中位数,90%,95%,99%

3、吞吐量

4、IOPS,连接数

5、JVM的资源变化趋势关注

常用的性能测试有哪些以及它的区别

LoadRunner:HP公司研发的工业级别的性能测试工具,是收费的一款性能测试工具

JMeter:100%使用Java语言研发的性能测试工具,是开源的,互联网公司基本使用的都是该性能测试工具

Locust:是基于Python的协程来设计的性能测试工具,需要编写Python代码来进行性能测试

Gatling:是微服务架构下高性能的性能测试工具

iops,qps,tps,响应时间,吞吐率?

IOPS 该术语主要是针对数据库的,也就是每秒发⽣的输⼊/输出操作的次数,是数据传输的⼀个度量⽅法。⽤于磁盘的 读写,IOPS值的是每秒读和写的次数。

吞吐量 指的是操作的速度,也就是每秒操作数或者每秒业务数。或者也可以说单位时间内客户端请求的数量,直接体现系统的性能承载能力。

TPS 统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。

QPS 指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

FFmpeg5.0源码阅读—— avcodec_send_frame avcodec_receive_packet

摘要:本文主要描述了FFmpeg中用于编码的接口的具体调用流程,详细描述了该接口被调用时所作的具体工作。   关键字:ffmpeg、avcodec_send_frame、avcodec_receive_packet   读者须知:读者需要了解FFmpeg的基本使用流程&#xf…

AQS概述

基本介绍 队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架。 使用了一个int成员变量(volatile int state)表示同步状态,通过内置的FIFO队列来完成资源获取…

【NLP】如何使用Hugging-Face-Pipelines?

一、说明 随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。Hugging Face 是一个平台,可为 NLP 任务(如文本分类、情感分析等)提供预先训练的语言模型。 本博客将引导您了解如何使用拥抱面部管道执行 NLP 任务…

不写代码开启Restful服务

1 前言 很久没有写文章了,不管什么原因,总觉得心里还是觉得有点焦虑,不看看书写点东西就有莫名的焦虑,仿佛只有忙起来才能忘记焦虑。虽然我也知道更重要的是思考方向,但是就像走路,不出发随着时间的流逝&am…

MacBook外接键盘修改键位

众所周知,MacBook的键盘和Windows差别很大,比如我们最常用的ctrlcv在Mac下是commandcv…而外接键盘往往是Windows布局,因此如何修改外接键盘键位就是一件很重要的事情! 首先,我们要知道Win键在Mac系统中是多余的&…

微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)

《微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)》 《微服务一 实用篇 - 5.分布式搜索…

mysql悲观锁与乐观锁、死锁

mysql悲观锁与乐观锁、死锁 乐观锁的缺点 这个策略源于 mysql 的 mvcc 机制,使用这个策略其实本身没有什么问题,主要的问题就是**对数据表侵入较大,我们要为每个表设计一个版本号字段,然后写一条判断 sql 每次进行判断&#xff…

k8s Service网络详解(一)

有关K8s网络的几个概念 Service:服务 Endpoint:端点 Ingress:和Service类似,基于OSI(Open System Interconnection)网络模型的七层协议数据(如HTTP)的转发 Kube Proxy&#xff1…

155、基于STM32单片机老人防跌倒摔倒GSM短信报警系统ADXL345加速度设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 单片机主芯片选…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

🎬 鸽芷咕:个人主页 🔥 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针运算💭 指针-整数💭 指针-指针💭 指针…

类和对象(中)--运算符重载

目录 1.运算符重载①运算符重载的概念②日期类和运算符重载 2.赋值运算符重载3. 流插入运算符<<重载4.Date类实现5.const成员6.取地址及const取地址操作符重载 1.运算符重载 大家有没有想过内置类型可以使用的运算符是否自定义类型的成员变量也可以使用呢&#xff1f; …

pyqt5-多行文本区QTextEdit实现鼠标滚轮调整文本大小

核心 在 PyQt5 中&#xff0c;你可以通过处理鼠标滚轮事件来设置 QTextEdit 的字体大小。具体做法是在 QTextEdit 上重新实现 wheelEvent 方法&#xff0c;并根据滚轮方向调整字体大小。 代码 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5…

MATLAB 最小二乘法拟合直线点云 方法一 (26)

MATLAB 最小二乘法拟合直线点云 方法一 (26) 一、算法简介二、算法实现1.代码(详细注释)2.结果展示2.1 拟合效果可视化2.2 对比拟合系数与实际值一、算法简介 提供一组点云(x1 y1 )(x2 y2 )(x3 y3 )…等等多个点… 算法自动拟合直线方程 二维点云的直线方程为:y=kx+…

Mac 预览(Preview)丢失PDF标注恢复

感谢https://blog.csdn.net/yaoyao_chen/article/details/127462497的推荐&#xff01; 辛苦用预览在pdf上做的阅读标记&#xff0c;关闭后打开全丢失了&#xff0c;推荐尝试下网站导入文件进行恢复&#xff1a; 直接使用该网页应用PDF Annotation Recovery 或者访问该项目&a…

在 Windows 中通过 WSL 2 高效使用 Docker

大家好&#xff0c;我是比特桃。平时开发中&#xff0c;不免会使用一些容器来跑中间件。而开发者使用的操作系统&#xff0c;大多是Mac OS 、Windows。Docker 为了兼顾这两个平台的用户&#xff0c;推出了 Docker Desktop 应用。Docker Desktop 中的内核还是采用了 Linux 的内核…

swift简单弹幕例子,仿哔哩哔哩

先看例子 每个弹幕的速度都是不一样的&#xff0c;支持弹幕整体开始暂停。 如果弹幕实在是太多了&#xff0c;有个缓冲队列&#xff0c;不停的重试能否显示&#xff0c;保证文字都能显示全&#xff0c;并且每条都能显示。 实现是基于 CADisplayLink 实现的&#xff0c;如此来…

mac使用教程【快速从windows切换为mac,mac快捷键合集】

mac使用教程 1. 安装brew并通过brew安装git 1.1 安装brew 打开终端输入如下命令&#xff1a; % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"选择对应的镜像进行安装 # 例如&#xff1a;输入5&#xff…

了解 3DS MAX 3D摄像机跟踪设置:第 5部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建陨石坑 步骤 1 启动 3ds Max 和 打开本教程最后一部分中保存的文件。 启动 3ds Max 步骤 2 删除所有占位符 从头开始创建陨石坑。 删除所有占位符 步骤 3 创建具有“长度”的平面 段和宽度段各…

如何创建vue2,vue3项目

前提需安装node.js和Vue CLI node.js:https://nodejs.org/zh-cn Vue CLI&#xff1a; npm install -g vue/cli 如何创建一个vue2项目 &#xff08;1&#xff09; 使用cmd终端直接创建 进入到vue项目所创建的目录里&#xff08;我是直接创建在桌面上&#xff09; 选择vue2 …

【mysql】聚簇索引和非聚簇索引(B树和B+树)

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: mysql 目录 一、索引分类 二、索引的数据结构 2.1 B树&#xff1a;改造二叉树 2.2 B树&#xff1a;改造B树 三、Mysql索引实现—InnoDB引擎 3.1 主键索引&#xff08;聚簇索引&#xff09; 3.2 …