压力测试与测试工具jmeter的介绍

目录

一、性能指标

二、jmeter

(一)JMeter 安装

(二)JMeter 压测示例

1、添加线程组

2、添加 HTTP 请求 

3、添加监听器

4、启动压测&查看分析结果

(三)JMeter Address Already in use 错误解决

 


压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。
使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是 : 内存泄漏,并发与同步
有效的压力测试系统将应用以下这些关键条件 : 重复 并发 量级 随机变化

一、性能指标

  • 响应时间(Response Time: RT
响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。
  • HPSHits Per Second) :每秒点击次数,单位是次/秒。
  • TPSTransaction per Second):系统每秒处理交易数,单位是笔/秒。
  • QPSQuery per Second):系统每秒处理查询次数,单位是次/秒。
对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS ,一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表示对服务器单击请求。
无论 TPS QPS HPS, 此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
  • 金融行业:1000TPS~50000TPS,不包括互联网化的活动
  • 保险行业:100TPS~100000TPS,不包括互联网化的活动
  • 制造行业:10TPS~5000TPS
  • 互联网电子商务:10000TPS~1000000TPS
  • 互联网中型网站:1000TPS~50000TPS
  • 互联网小型网站:500TPS~10000TPS
  • 最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)的最大时间。
  • 最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响应)的最少时间
  • 90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第 90%的响应时间。
从外部看,性能测试主要关注如下三个指标
  • 吞吐量:每秒钟系统能够处理的请求数、任务数。
  • 响应时间:服务处理一个请求或一个任务的耗时。
  • 错误率:一批请求中结果出错的请求所占比例。

二、jmeter

 

(一)JMeter 安装

https://jmeter.apache.org/download_jmeter.cgi
下载对应的压缩包,解压运行 jmeter.bat 即可

(二)JMeter 压测示例

1、添加线程组

 

线程组参数详解:
  • 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  • Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为 10,准备时长为 2,那么需要 2 秒钟启动 10 个线程,也就是每秒钟启动 5 个线程。
  • 循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 100,那么每个线程发送 100 次请求。总请求数为 10*100=1000 。如果勾选了永远,那么所有线程会一直发送请求,一到选择停止运行脚本。
  • Delay Thread creation until needed:直到需要时延迟线程的创建。
  • 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
  • 持续时间(秒):测试持续时间,会覆盖结束时间
  • 启动延迟(秒):测试延迟启动时间,会覆盖启动时间
  • 启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
  • 结束时间:测试结束时间,持续时间会覆盖它。

2、添加 HTTP 请求 

 

3、添加监听器

 

4、启动压测&查看分析结果

结果分析:

  • 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
  • Throughput 吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
  • 压测结束,登陆相应的 web 服务器查看 CPU 等性能指标,进行数据的分析;
  • 最大的 tps,不断的增加并发数,加到 tps 达到一定值开始出现下降,那么那个值就是最大的 tps
  • 最大的并发数:最大的并发数和最大的 tps 是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
  • 压测过程出现性能瓶颈,若压力机任务管理器查看到的 cpu、网络和 cpu 都正常,未达90%以上,则可以说明服务器有问题,压力机没有问题。
  • 影响性能考虑点包括
    • 数据库、应用程序、中间件(tomactNginx)、网络和操作系统等方面
  • 首先考虑自己的应用属于 CPU 密集型还是 IO 密集型

(三)JMeter Address Already in use 错误解决

windows 本身提供的端口访问机制的问题。
Windows 提供给 TCP/IP 链接的端口为 1024-5000 ,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
  1. cmd 中,用 regedit 命令打开注册表
  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下,
    1. 右击 parameters,添加一个新的 DWORD,名字为 MaxUserPort
    2. 然后双击 MaxUserPort,输入数值数据为 65534,基数选择十进制(如果是分布式运 行的话,控制机器和负载机器都需要这样操作哦)
  3. 修改配置完毕之后记得重启机器才会生效
https://support.microsoft.com/zh-cn/help/196271/when-you-try-to-connect-from-tcp-ports-grea
ter-than-5000-you-receive-t
TCPTimedWaitDelay 30

 

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

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

相关文章

yum出现Could not retrieve mirrorlist解决方法

Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release6&archi386&repoos error was 14: PYCURL ERROR 6 - “Couldn’t resolve host ‘mirrorlist.centos.org…

monaco,monaco-editor,monaco-editor-webpack-plugin,

Monaco "Monaco"是包含了Monaco Editor和Monaco Language Server两个项目的总称,而"Monaco Editor"是Monaco项目中的一个部分,它是一款基于Web技术的高性能代码编辑器。 Monaco Language Server是一个支持多种语言的语言服务器&am…

【web逆向】全报文加密及其登录流程的分析案例

aHR0cHM6Ly9oZWFsdGguZWxkZXIuY2NiLmNvbS9zaWduX2luLw 涉及加密库jsencrypt 定位加密点 先看加密的请求和响应: 全局搜索加密字段jsondata,这种非特定参数的一般一搜一个准,搜到就是断点。起初下的断点没停住,转而从调用栈单步…

HJ52 计算字符串的编辑距离

题目:HJ52 计算字符串的编辑距离 题解: 定义dp方程,dp[i][j] 表示字符串s1(1-i),到字符串s2(1-j)的编辑距离; 如果s1[i] s2[j] 证明当前位置的字符相等,无需操作,即dp[i][j] dp[i-1][j-1]; …

K8S系列文章之 kubeasz部署K8S环境

自动化安装方式(kubeasz)* 生产环境推荐(首次安装下载相关配置和安装包)是基于Ansible实现的部署工具 简单介绍 每一具体k8s集群的详细配置参数文件 Ansible 任务配置文件 镜像安装包 安装部署步骤 前提 : 保证Ansib…

Python web实战之 Django 的模板语言详解

关键词: Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一,Django 提供了一套完整的 MVC 模式,其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门 Dj…

npm发布包

1.npm 登录 在控制台输入命令 npm login 按提示输入用户名,密码,邮箱后登录 如果出现如下提示 需要将淘宝镜像源切换为npm源,删除或注释以下内容就行 2.发布 进入准备发布的代码的根目录下,输入命令 npm publish 3.删除已发…

PostgreSql pg_ctl 命令

一、概述 控制 PostgreSQL 服务的工具。 二、语法 --初始化数据库实例 pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]--启动数据库实例 pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]--停止数据库实例 pg_ctl sto…

区块链和WEB3.0有哪些基础知识呢

区块链基础知识 常用区块链基础知识包括: (1)区块链概念:区块链是一种去中心化的分布式账本技术,它通过加密算法和共识机制保证了数据的安全性和不可篡改性。区块链中的每一个区块都包含了前一个区块的哈希值&#x…

怎么学习CSS相关技术知识? - 易智编译EaseEditing

学习CSS技术是前端开发中的重要一环,它用于控制网页的样式和布局,使网页更加美观和易于使用。以下是学习CSS技术的几个方面: 基本语法和选择器: 了解CSS的基本语法,学习如何使用选择器来选择HTML元素并应用样式。 样…

一条sql语句在mysql中如何执行(查询+更新)

文章目录 一 MySQL 基础架构1.1 MySQL 基本架构1.2 Server 层基本组件介绍1) 连接器2) 查询缓存(MySQL 8.0 版本后移除)3) 分析器4) 优化器5) 执行器 二 语句分析2.1 查询语句2.2 更新语句为什么要用两个日志模块,用一个日志模块不行吗?为什么必须有“两阶段提交”…

MySQL的索引使用的数据结构,事务知识

一、索引的数据结构🌸 索引的数据结构(非常重要) mysql的索引的数据结构,并非定式!!!取决于MySQL使用哪个存储引擎 数据库这块组织数据使用的数据结构是在硬盘上的。我们平时写的代码是存在内存…

根据今天全量的数据以及昨天全量的数据,获取今天增量的数据

编写了一个根据今天的全量的数据以及昨天全量的数据,自动获取今天增量数据的脚本。 #!/bin/bashhive_db"" hive_result_tb"" hive_source_tb"" hive_source_last_tb"" hive_pk""initParam(){# 库名hive_db${1}# …

Qt中JSON的使用

一.前言: JSON是一种轻量级数据交换格式,常用于客户端和服务端的数据交互,不依赖于编程语言,在很多编程语言中都可以使用JSON,比如C,C,Java,Android,Qt。除了JSON&#x…

前端实现给图片添加水印

一、利用Canvas ::: tip 实现步骤: 上传图片,转换为base64格式的数据,利用Image加载图片利用canvas写入图片,然后绘制水印最后通过canvas输出添加水印后的base64数据 ::: 1. 本地读取图像文件渲染到img标签 ::: tip ​ 通过intpt[type…

格力变频空调怎么收氟?

格力变频空调怎么收氟? 随着气温的升高,越来越多的人开始使用格力变频空调来调节室内温度。但是,在使用格力变频空调时,很多人并不知道如何正确收氟。下面,我们将详细介绍一下格力变频空调怎么收氟。 首先&#xff0…

MyCat核心概念、需求案例讲解、环境准备及分片配置

1.MyCat概念介绍 2.MyCat入门需求 2.1 需求分析 2.2 环境准备 输入以下命令检查服务器防火墙状态 dead代表关闭状态,如果不关闭也可以需要开放特定的端口号!! systemctl status firewalld接着需要在三台服务器上的MySQL上创建三个数据库db0…

企业架构NOSQL数据库之MongoDB

目录 一、背景描述及其方案设计 (一)业务背景描述 (二)模拟运维设计方案 二、Mongodb介绍 (一)nosql介绍 (二)产品特点 1、存储性 2、 效率性 3、结构 三、安装和配置 (一&#xff09…

Leetcode-每日一题【剑指 Offer 10- I. 斐波那契数列】

题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开…

考研C语言进阶题库——更新6-10题

目录 6输入一个字符串,输出其中字母的个数 7用递归求函数值x1,f(x)10,x>1.f(x)f(x-1)2 8所给字符串正序反序连接,形成新串并输出 9输入若干个整数以-1标记为结束输出其中的最大值 10求矩阵的两条对角线之和 6输入一个字符串,输出其中…