Jmeter压测测试

  • Post author:
  • Post category:其他


Jmeter安装启动

1、

Jmeter

下载安装

模拟真正的大量并发请求

下载Jmeter:

Apache JMeter – Download Apache JMeter

解压apache-jmeter-5.4.1.zip文件至目录下(不要有空格和中文)


2、配置JMETER_HOME

  • 在系统中搜索

    设置

  • 打开设置,在设置功能里,点击第一项

    系统

  • 在系统功能里,左侧菜单找到

    关于

  • 在关于的相关设置里可以看到

    高级系统设置

  • 点击高级系统设置后,会打开

    系统属性

    窗口,在窗口中,就能找到

    环境变量

JMETER_HOME,

变量名输入:JMETER_HOME

变量输入:E:\server\jmeter\apache-jmeter-5.4.1\apache-jmeter-5.4.1

3、编辑CLASSPATH变量

加上下面这行,然后确定

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;


3、启动Jmeter

点击Jmeter中bin目录下面的jmeter.bat文件即可打开Jmeter了。

接着会打开俩个窗口:Jmeter的命令窗口和Jmeter的图形操作界面,不可以关闭命令窗口

切换一下界面主题和语言


JMeter入门

1、测试计划

test plan

一个性能测试场景, JMeter称之为

test plan

,中文翻译为

测试计划

实际上,一个 JMeter的测试计划 对应 性能测试的一个场景,其实也就是一个

测试用例


2、

线程组

JMeter 把同一种用户的行为和数量, 用

线程组

来定义,代表有

一批用户,都是这样的行为


1.添加线程组

2.

一个线程代表一个用户

,线程组中配置了几个线程数就是表示几个用户使用。



Ramp-Up时间:


所有用户上线的总时间,以秒为单位。



循环次数:


每个用户 做线程组里面定义的行为多少次。 默认1次


3、手动

取样器

一个具体的请求,是通过


Sampler 取样器


来 定义的,最常用的就是这个 HTTP请求取样器。


右键线程组-添加取样器

http请求,5个用户都去访问hello接口


4、

查看结果树


监听器

:最常见的就是



查看结果树



,里面会显示HTTP请求具体的细节的信息。


线程组右键,添加-监听器-查看结果树


结果树

中大概就长这样

  • Connect Time : jmeter 和 被测系统 建立 TCP 连接的时间,包括3路握手时间, 如果连接复用, 值为0
  • lantency: 从发出请求前 到 接收完

    第一个响应

    的时间
  • load time: 从发出请求前 到 接收完

    所有响应

    的时间 如果是长消息
load time >= lantency,因为有多个响应【区别在于是不是一次能接受完】

这里显示了很多信息,分别是如下意思:

Thread Name    线程组名称
Sample Start    启动开始时间
Load time    加载时长,这个时间是我们测试常用的时间,也是整个请求的消耗时间,从发送到接收完成全程消耗的时间
Latency    等待时长,不常用,表示从请求发送到刚开始接收响应时的时间
Size in bytes    发送的数据总大小
Headers size in bytes    发送头大小
Body size in bytes    发送数据的其余部分大小
Sample Count    发送请求数统计
Error Count    交互错误统计
Data type    数据类型
Response code    返回码
Response message    返回信息
Response headers    返回的头部信息
HTTPSampleResult    其它附加的请求信息


Size in bytes

: 整个消息消息大小 = Headers size in bytes + Body size in bytes


Headers size in bytes

: 响应消息头大小


Body size in bytes

: 响应消息体大小


5、

开启并发压力测试


接着开启并发压力测试,

Tomcat是一个Web应用服务器,同时也是一个Servlet/JSP容器。Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servlet的响应返回给客户端。

tomcat的默认的工作线程数被打满了,没有多余的线程来分解压力和处理。

server:
  tomcat:
    max-connections: 10000 #最大连接数,默认为10000
    accept-count: 100 # 最大连接等待数,默认100 
    max-threads: 200  #最大工作线程数,默认200
    min-spare-threads: 10 #最小工作线程数,默认10
每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求.最大工作线程数:(4核8g内存,线程数800,一般是 核数*200 )

BeanShell

1、BeanShell处理器

在jmeter中有如下

6种


BeanShell,

BeanShell有本身的语法,同时支持java语法


2、BeanShell语法

勾选日志查看

控制台打印

System.out.println("hello world");
log.info("威化饼干");
log.error("空气清新剂");



vars


设置局部变量

局部变量:只在当前线程组有效

a) vars.get(“name”):从jmeter中获得变量值

b) vars.put(“key”,”value”):数据存到jmeter变量中

vars.put("name","小羽毛");
log.info(vars.get("name"));

vars 设置和提取的变量可以和当前线程组其他任何组件的局部变量相互设置值和取值



props


设置全局变量(可跨线程组)

props :操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性

a) props.get(“PROP”);

b) props.put(“PROP”,”12345″);



prev


:获取前面的sample返回的信息,常用方法:

a) getResponseDataAsString():获取响应信息

b) getResponseCode() :获取响应code



引用外部java文件:

在bean shell中通过source(“代码路径”)方法引入java,然后调用方法和java一样。


引用外部class文件:

直接把上例中的myJava.java文件编译成class文件,用addClassPath(“C:\\”)方法引入 class文件,在用import导入包及类,然后就可以像java一样调用了


引用外部Jar包:



版权声明:本文为m0_56799642原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。