Jmeter利用及压测

打印 上一主题 下一主题

主题 1971|帖子 1971|积分 5913

目录

安装
利用
1、添加线程组
2、添加Http哀求
3、添加察看效果树
4、添加断言
5、添加断言效果监听器
6、添加聚合报告
7、添加用户自定义变量
8、读取CSV和Txt文本文件
9、if控制器
Linux上利用
题目总结
连接mysql
1、检察数据库当前版本
2、官网下载对应的jar包
3、创建线程组和监听器


安装

官网地址
  1. http://jmeter.apache.org
复制代码
1、需要安装JDK8+。
2、启动 bin目录下 jmeter.bat。
注意:如果启动提示 Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5。
办理:用管理员身份运行即可。
3、切换中文
a、控制台临时修改
options -> choose language
b、配置文件永世修改
bin目录 -> jmeter.properties
默认 #language=en
改为 language=zh_CN 
利用

1、添加线程组

Test Plan -> Add ->Threads ->Thread Group(控制总体并发)
线程数:假造用户数,一个假造用户占用一个进程或线程。
准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,好比100个线程,10秒,则表示10秒内100个线程都要启动完成,每秒启动10个线程。
循环次数(Loop Count):每个线程发送的次数,如果值为5,100个线程,则会发送500次哀求。
2、添加Http哀求

Thread Group -> Add -> Sampler(取样器) -> Http Request(一个线程组下面可以添加多个Sampler)
web服务器:
    默认协议是http
    默认端口是80
    服务器名称或IP :哀求的目的服务器名称或IP地址
    路径:哀求url,好比 /login
Use multipart/from-data for HTTP POST :当发送POST哀求时,利用Use multipart/from-data方法发送,默认不选中。
3、添加察看效果树

线程组/Http Request -> Add -> Listener(监听器)-> View Results Tree(察看效果树)
4、添加断言

线程组/Http Request -> Add -> Assertions(断言)-> Response Assertion(相应断言)  
apply to(应用范围):
    Main sample only: 仅当前父取样器 举行断言,一样平常一个哀求,如果发一个哀求会触发多个,则就有sub sample(比力少用)。
    要测试的相应字段:
        Text Response(相应文本):即相应的数据,好比json等文本。
        Response Code(相应代码):http的相应状态码,好比200,302,404。
        Response  Message(相应信息):http相应代码对应的相应信息,比方:OK。
    模式匹配规则:
        contains(包含):只要包含在里面就成功。
        Matches(匹配):相应内容完全匹配,不区分巨细写。
        Equals:完全匹配,区分巨细写。
5、添加断言效果监听器

线程组/Http Request -> Add -> Listener(监听器)-> Assertion Results(断言效果)
注意:每个Sampler下面可以加单独的效果树,然后同时加多个断言,最外层可以加个效果树举行汇总。
6、添加聚合报告

线程组/Http Request -> Add -> Listener(监听器)-> Aggregate Report(聚合报告)
lable: sampler的名称。
Samples: 一共发出去多少哀求,比方10个用户,循环10次,则是 100。
Average: 均匀相应时间,单元ms。
Median: 中位数,也就是 50% 用户的相应时间。
90% Line : 90% 用户的相应不会超过该时间。
95% Line : 95% 用户的相应不会超过该时间。
99% Line : 99% 用户的相应不会超过该时间。
min : 最小相应时间,单元ms。
max : 最大相应时间,单元ms。
Error%:错误的哀求的数量/哀求的总数。
Throughput : 吞吐量——默认情况下表示每秒完成的哀求数(Request per Second) 可类比为QPS。
Received KB/sec : 每秒接收数据量。
Sent KB/sec : 每秒发送数据量。
7、添加用户自定义变量

线程组/Http Request -> Add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
引用方式${XXX}。
8、读取CSV和Txt文本文件

线程组/Http Request -> Add -> Config Element(配置原件)-> CSV data set config(CSV数据文件设置)
如果是多个参数需要同时引用,则在CSV数据文件里面设置加多个字段,Variabled names(comma-delitited):  csv_name,csv_pwd。
9、if控制器



  • 第一个参数:

    • Expression (must evaluate to true or false) :表达式(效果值必须是true或false)。在右边文本框中输入的条件值必须是true 或 false。

  • 第二个参数:

    • Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(需要利用__jexl3 or __groovy 表达式)

  • 第三个参数:

    • Evaluate for all children?:条件作用与每个子节点,默认不勾选。仅在If Controller入口处判断一次

  • 第四个参数:

    • use status of last sample: 作用就是只有当上一个哀求成功后,才会实行if控制器下的哀求。

注意:
1、文本框上的黄色感叹号,就是发起接纳默认的jexl3 or groovy 表达式,以提高性能。
2、if 控制器 只能作用于其下的子项。

jexl3 or groovy 表达式
jexl3表达式格式
  1. ${__jexl3(条件表达式)}
复制代码
groovy 表达式
  1. ${__groovy(条件表达式}
复制代码
逻辑表达式分析


  • ==

    • 含义:是否等于
    • 示例:如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1。

  • !=

    • 含义:不等于
    • 含义:如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1。

  • !

    • 含义:非
    • 示例:如${__jexl3(!(${VAR}!=2),)},对${VAR}的值不等于2,其判断为真,那么实行IF下的子项。

  • &&

    • 含义:而且
    • 示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"均为真时,实行IF控制器下的子项。

  • ||

    • 含义:或
    • 示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"其中一项为真时,实行IF控制器下的子项。

  • >=

    • 含义:大于等于
    • 示例:如${__jexl3(${count}>=15,)}。也就是${count}>=15,其判断为真,那么实行IF控制器下的子项。

注意:
如果判断表达式是字符串,此时,必须要用引号,变量都认为时字符串的形式,如:${__jexl3("${name}"=="成都",)},不能用${__jexl3(${name}=="成都",)}
Linux上利用

1、安装JDK8并配置环境变量。
2、下载安装包。
3、在 /usr/local 目录下创建 jmx、jtl、test-report 文件夹用于存放压测脚本、记载效果文件和测试报告
  1. mkdir {jmx,jtl,test-report}
复制代码
4、在Linux服务器上以非GUI界面去实行JMX压测脚本
官方参数地址:
  1. http://jmeter.apache.org/usermanual/get-started.html
复制代码
非GUI界面,压测参数讲授:
-n 非GUI模式
-t 指定要运行的 JMeter 测试脚本文件
-l 记载效果的文件(要确保之前没有运行过,即xxx.jtl不存在,否则报错)
-e 在脚本运行结束后天生html报告
-o 用于存放html报告的目录(目录要为空,否则报错)
  1. cd /usr/local/jmeter-5.5/bin
复制代码
  1. ./jmeter -n -t /usr/local/jmx/users.jmx -l /usr/local/jtl/result.jtl -e -o /usr/local/test-report
复制代码
5、下载并检察压测报告
打开jmeter,新建线程组 -> Listener -> Summary Report ->浏览jtl文件
6、压测淘汰资源利用的一些优化发起,使压测效果更准确
a、利用非GUI模式。
b、用内网压测,淘汰带宽影响压测效果。
c、尽大概少地利用断言,因为大量判断大概正则匹配会影响效果。
d、在当地测试阶段如果利用了Listener的一些报告等,则在正式测试时必须利用-l参数,它可以删除或禁用Listener。
e、如果压测大流量,只管多几个节点以非GUI模式向服务器施压。
7、分布式压测
114作为主节点,115作为slave节点,压测修改master节点信息:
jemeter.properties 值是slave机器的ip+端标语,如果有多个,用逗号分隔
  1. remote_hosts=10.0.0.115:1099
  2. server.rmi.ssl.disable=true
复制代码
修改slave节点信息:
  1. server.rmi.ssl.disable=true
复制代码
注意:master机器启动后会拷贝jmx文件到slave机器,以是不需要在每台slave机器上也上传一份jmx,只需要在master机器上上传一份jmx脚本即可。如果利用csv举行参数化,则需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
先启动slave机器,注意要同个网段,ip地址用内网ip
  1. cd /usr/local/jmeter-5.5/bin
  2. nohup ./jmeter-server &
复制代码
检查启动是否成功
  1. ps -ef|grep jmeter-server
复制代码
主节点上实行测试命令(注意远程压测多了 -r 参数):
  1. ./jmeter -n -t /usr/local/jmx/users.jmx -r -l /usr/local/jtl/result.jtl -e -o /usr/local/test-report
复制代码
题目总结

1、Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
        #
        # There is insufficient memory for the Java Runtime Environment to continue.
        # Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.`
办理:
编辑jmeter
搜索 : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
改变初始堆内存和最大堆内存。
2、Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
    An error occurred: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
办理:
拥有RMI over SSL的有效密钥库,大概禁用了SSL。
禁用SSL:
jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用。
连接mysql

1、检察数据库当前版本

  1. SELECT VERSION();
复制代码
2、官网下载对应的jar包

官网地址
  1. https://dev.mysql.com/downloads/connector/j/
复制代码
需要连接不同版本的数据库下载版本最高的谁人jar包


下载解压后将 mysql-connector-j-8.0.33.jar 复制到 jmeter 的 lib 包下的 ext 包下然后重启 jmeter
3、创建线程组和监听器


4、创建取样器

然后实行即可从效果树中获取数据。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表