首页 > 数据库 >jmeter压测网站、数据库、接口及分布式压测

jmeter压测网站、数据库、接口及分布式压测

时间:2024-01-16 13:22:25浏览次数:31  
标签:Jmeter http 请求 压测 线程 测试 jmeter 分布式

Jmeter是apache组织开发的基于java的压力测试工具。

Jmeter可以用于对服务器、网络活对象模拟巨大的负载,来自不同压力类别下测试他们的强度和分析整体性能。另外,jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,jmeter允许使用正则表达式创建断言。

2.Jmeter工作原理

 

3.Jmeter安装

实验环境:
系统:centos6.6 64位
Java:1.8.0_65
Jmeter:3.0
(1)安装java

tar xf jdk-8u65-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ln -s jdk1.8.0_65/ jdk
echo "JAVA_HOME=/usr/local/jdk" > /etc/profile.d/java.sh
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile.d/java.sh 
source /etc/profile.d/java.sh
java -version

(2)安装jmeter

wget http://apache.fayea.com//jmeter/binaries/apache-jmeter-3.0.tgz
tar xf apache-jmeter-3.0.tgz -C /usr/local/
cd /usr/local/
ln -s apache-jmeter-3.0/ jmeter

(3)运行jmeter,需要你的远程工具支持打开图形界面,我这里使用xmanager

/usr/local/jmeter/bin/jmeter

Jmeter打开后页面如下所示:

 


补充:如果是Windows平台运行jmeter,也是需要配置java环境,然后下载jmeter,解压之后,运行jmeter安装目录下的bin/jmeter.bat即可,通常也有很大一部分人在Windows上面配置jmeter做控制器,linux做压力机。

4.jmeter压测网站

测试步骤:
(1)测试计划
(2)线程组
(3)http请求
(4)监听器
(5)运行脚本
(6)查看报告
1、整个测试都是以测试计划为基础,基于测试计划进行的测试,比如线程组和http请求都是在测试计划的基础上创建的。

 


2、添加一个线程组

 

线程数:也就是开启多少线程进行测试
Ramp up period:设置的虚拟用户数需要多长时间全部启动。如果线程数为20,时间为10,也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20,循环次数为100,那个每个线程发送100次请求。总请求数为20*100=2000。如果勾选了“永远”,那么所有线程会一直发送请求,一直选择停止运行脚本。
调度器:可以更灵活的设置运行时间等,必须设置持续压测一个小时,或者压测一天。

 


3、在线程组里面添加一个http请求

 

 

 

Http请求设置-保持默认即可:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称
注释:对于测试没有任何作用,仅用户记录可读的注释信息
服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值80.后面的超时定义可以不用填写。
协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http
方法:发送http请求的方法,可用方法包括get、post、head、put、options、trace、delete等。
Content encoding:内容编码方式
路径:目标url路径(不包括服务器地址和端口)
自动重定向:如果选中该选项,当发送http请求后得到的响应是302/301时,jmeter自动重定向到新的页面。
Use keep Alive:当该选项被选中时,jmeter和目标服务器之间使用keep-Alive方式进行http通信,默认选中
Use multipart/from-data for http post:当发送http post请求时,使用Use multipart/from-data方法发送,默认不选中。
同请求一起发送参数:在请求中发送URL参数,对于带参数的URL、jmeter提供了一个简单的对参数化的方法。用户可以将url中所有参数设置在本表中,表中的每一行是一个参数值对(对应URL中的名称 名称1=值1 )
同请求一起发送文件:在请求中发送文件,通常,http文件上传行为可以通过这种方式模拟。
4、添加监听器
查看结果树和聚合报告

 

5、运行测试:我们的测试计划都设置没有问题之后,点击测试运行按钮就可以开始测试了

 


6、查看测试结果
结果树:这里可以查看每个请求的成功还有失败,还有响应的数据

 


聚合报告:主要是查看请求的响应时间,错误率,每秒并发等

 


参数说明:单位为毫秒
Label:定义HTTP请求名称
Samples:表示这次测试中发出了多少个请求
Average:平均响应时长——默认情况下是单个request的平均响应时长
Median:中位数,也就是50%用户的响应时长
90% Line:90%用户的响应时长
Min:访问页面的最小响应时长
Max:访问页面的最大响应时长
Error%:错误请求的数量/请求的总数
Throughput:默认情况下表示每秒完成的请求数(request per second)
KB/Sec:每秒从服务器端接收到的数据量

5.Jmeter压测数据库

环境准备:
1、下载mysql驱动,并且在测试计划中添加驱动,驱动下载地址
驱动下载地址:http://repo.maven.apache.org/maven2/mysql/mysql-connector-java/
添加驱动方式,按照下图进行

 


2、配置:jdbc配置
在线程组里面添加jdbc配置

 


配置jdbc:
Variable Name设置同数据库名称,然后就是配置最下面的四行,也就是mysql连接方式,jdbc的驱动类,还有就是帐号密码

 


3、jdbc请求配置
添加jdbc请求

 


在jdbc请求中,选择请求语句类型为select,并且在下方写入测试的sql语句

 


添加两个监听器:查看结果树,聚合报告

 


运行测试,并且从结果树中可以看到mysql的请求是成功的,也可以看到请求的语句还有请求的结果,如果需要压力测试,只需要修改线程组里面的用户数还有循环次数,在压测网站的案例中已经有介绍,可以参考设置。

 

6.Jmeter压测接口

这里描述的的测试方式为jmeter自带的测试方法,我们在实际工作中由于token问题,测试接口都是自己编写python脚本测试,如果使用jmeter压力测试会使用python生成URL,然后把路径复制到jmeter中,并不会在jmeter中传递URL参数。

6.1.测试get接口:

测试计划如下:

 


(1)HTTP请求配置如下:
1、配置服务器名称或者IP地址,注意这里需要带http还有域名后面的后缀
2、配置请求的方法,这里选择get
3、配置路径,也就是域名后面的路径

 


(2)http设置完成就可以运行测试了
(3)查看结果树:text中请求为绿色,说明请求是成功的,也就是说明get请求没有问题

 

6.2.测试post接口:

post和get配置前三个选项配置都一样,但是post接口需要传入参数,只需要在Parameters页面中添加相应的接口参数即可

 

7.Jmeter分布式压力测试

测试架构如下:

 


测试前的准备:
1、 防火墙关闭
2、 主机名解析
3、 时间同步
(1)压力机安装Jmeter,步骤和上面安装Jmeter步骤相同
(2)在controller机器的jmeter的bin目录下,找到jmeter.properties文件,修改远程主机选项

[root@jmeter~]# vim /usr/local/jmeter/bin/jmeter.properties
remote_hosts=172.16.4.102,172.16.4.103

(3)Agent启动服务,如果启动1099端口说明jmeter的压力机启动正常

[root@agent-01 ~]# /usr/local/jmeter/bin/jmeter-server &
[root@agent-01 ~]# netstat -lntp | grep 1099
tcp        0      0 :::1099                     :::*                        LISTEN      47783/java

(4)启动controller机器上的jmeter应用,选择菜单“运行”–>“远程启动”来分别启动agent,也可以直接选择“远程全部启动来将所有的agent启动

 

标签:Jmeter,http,请求,压测,线程,测试,jmeter,分布式
From: https://www.cnblogs.com/R-bear/p/17967453

相关文章

  • JMeter-JDBC,连接数据库增、删、改、查操作
     1、Callablestatement这是一个可调用语句类型,只要语法正确,任何语句,再多的条数都能支持,所以查询或者插入数据,进行多个sql语句操作,那么就要选择Callablestatement。插入多条sql语句,则要现在Callablestatement。  上面是插入单条数据,使用不方便,下面就行参数化1.加一......
  • jmeter入门:数据库压力测试全解析
    一.下载安装下载地址https://jmeter.apache.org/download_jmeter.cgi解压,打开apache-jmeter-5.2.1\binjmeter.bat即可。 二.配置jmeter1.添加线程组其中参数为:线程数:相当为50个用户ramp-up:每秒增加的线程数0相当于并发循环次数:emmm....2.配置jdbc以下选项需......
  • Jmeter对数据库做压力测试,完整过程
    Jmeter对数据库做压力测试一、环境:apache-jmeter-5.0,Oracle11g、windows7、jdk1.8、ojdbc14-10.2.0.2.0.jar二、操作配置:2.1、启动Jmeter Jmeter初始化界面.png  2.2、界面切换到中文界面切换语言.png  中文界面.png    2.3、在项目上添加一个线程组 ......
  • JMeter 源码解读 - HashTree
    背景:在JMeter中,HashTree是一种用于组织和管理测试计划元素的数据结构。它是一个基于LinkedHashMap的特殊实现,提供了一种层次结构的方式来存储和表示测试计划的各个组件。HashTree的特点如下:层次结构:HashTree使用树状结构来组织测试计划元素。每个节点都可以包含子节点......
  • Redis分布式锁
    初始第一版代码背景:Redis中stock字段的value设为300超卖问题:多个请求(3个)同时调用这个接口,他们查出的stock都是300,都进行减1操作,实际上需要减3得到297,但都是执行300-1记录stock为299。解决:使用jdk自带的锁,可以使多个请求排队,实现同一时间单个请求执行锁区间的代码。架构背......
  • Jmeter如何分布式执行脚本?
    Jmeter分布式执行原理:JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave);master会在本地编辑好jmx压测脚本,执行时,master将jmx脚本发送至slave上,slaver执行时不需要启动jmeter,只需要把jmeter-sever.bat文件打开以非GUI形式执行;slave执行完毕后将结果回传给......
  • Postman/Jmeter工具实现接口测试,为什么还要用代码来实现接口自动化测试?
    这种工具包括一些开源框架最大缺点就是不够灵活,如果是单接口的测试还行,但是有的项目接口比较庞大和负责,这种情况下就不大适用工具(工具适用于小型项目,代码适用于中大型项目)主要有以下几个原因:1敏捷开发,接口巨大,工具对于实现团队协作很不友好,很不方便2工具的功能都是定义好的,一旦......
  • 怎么让生产环境的全链路压测不影响正常业务呢?
    时间上:挑选用户少的时间进行压测     技术上:对业务代码进行改造,使业务服务代码能够处理压测标记,通过压测标记把数据写入影子库、影子表、影子消息队列、影子缓存传递压测标记时,确保压测标记不丢失、不中断、压测数据不污染。压测标记不丢失:客户端发送http请求时带上......
  • 压测中TPS上不去的几种原因及分析?
    1、 服务器资源限制:服务器的硬件资源(如CPU、内存、磁盘)可能不足以处理大量的请求。在高负载情况下,服务器可能无法及时响应所有的请求,导致TPS上不去。解决方法可以考虑升级硬件资源或通过负载均衡将请求分散到多台服务器上。2、 网络带宽限制:服务器的网络带宽可能成为瓶颈,在......
  • 分布式系统和微服务的关系
     分布式系统和微服务的关系   分布式系统    分布式系统是由多台计算机组成的系统,这些计算机通过网络进行通信和协作,共同完成一个或多个共享目标。在分布式系统中,各个计算机节点可以分布在不同的地理位置,它们通过消息传递或共享存储等方式进行通信。分布......