关于jmeter简单总结

1. 前言

对于开发来说,在功能开发完成后做自测的时候,多一个选择。使用工具可以提高生产力!!!

对于测试来说,复习一下…0.0 (毕竟只是的个后端er,如一下内容有错误的地方,欢迎指出)

注:以下内容的环境均基于:jmeter5 + jdk1.8 + win10

接下来大概流程

简介&概念解释
安装&配置
实操演示
1.脚本录制
2.测试执行
3.报告导出
关于分布式
踩坑记录

2. 简介

百科介绍 : 是Apache组织开发的基于Java的压力测试工具,巴拉巴拉、、、
官网介绍 :The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

2.1 特点
  1. 能够对http、ftp服务器进行压力和性能测试,也可以通过jdbc对各种数据库进行同样的测试
  2. 多平台支持,win、mac、linux都可以运行
  3. 支持脚本录制,可以生成丰富的测试报告
  4. 开源的、免费的、可拓展(有兴趣的可以自定义jmeter功能)
2.2 基本概念

3. 安装配置

  1. 下载JDK1.8,因为Jmeter运行需要依赖jre。正常流程,是要配置JDK环境变量
  2. 下载解压Jmeter5.0, 目前最新的Jmeter5需要配合jdk8+的版本。配置Jmeter环境变量,教程点这
3.1 关于设置默认中文

设置GUI默认语言

3.2 关于设置内存大小(内存溢出)

设置内存大小

4. 实操演示

4.1 脚本录制

4.2 测试计划执行

4.3 测试报告导出
导出命令:jmeter -n -t "cmt - 100.jmx" -l resutl.csv -e -o report

参数说明:

  • -n: 非GUI模式执行JMeter
  • -t: 执行测试文件所在的位置
  • -l: 指定生成测试结果的保存文件,jtl文件格式
  • -e: 测试结束后,生成测试报告
  • -o: 指定测试报告的存放位置
  • 导出注意点:重新导出前要删除原来已经导出的目录与文件,否则会报错

导出示例

5.分布式部署

在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。

脚本发送
执行结果
脚本发送
执行结果
脚本发送
执行结果
脚本发送
master
slave1:执行master发过来的脚本
slave2...
slave3...
slaveN...
5.1 原理
  1. Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
  2. 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
  3. 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
5.2 部署
5.2.1. 关于slave机部署
  1. 在slave服务器上解压安装jmeter。

  2. 修改配置如下三个地方:
    这里的false改为true,不然会报错的、、、
    修改slave机的server端口,master同个这个配置访问salve机器
    配置slave机的端口

  3. 以管理员身份运行“jmeter-server.bat” salve运行效果

  4. 现在salve机器启动好了,等待master调用、、、(多台slave的话,就重复以上步骤)

5.2.2. 关于master部署
  1. 在master服务器上解压安装jmeter。

  2. 修改以下配置: 填入slave机的ip&端口,多台采用逗号间隔

  3. 启动master上的jmeter:运行

  4. 启动成功过的效果:master上的效果
    slave的效果、、、

5.3 注意点事项
  1. 如果master上有csv脚本文件,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
  2. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以master自身的任务也很重,建议单独用一台机器作为mater。
  3. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。确保每台服务器上没有安装虚拟机,如果有可以禁用对应的虚拟机网络连接(不然有可能会出现一些调用的问题)。

6. 踩坑记录

  • 问题描述:各种配置都没问题,但是通过master启动分布式执行测试计划后,salve上的命令面板执行得很慢(过了大概快一分钟,才starting…然后过了N分钟才finished),并且master始终没接收到slave执行计划的结果信息。

  • 解决过程:开始以为是执行计划线程太多了100*100,然后把线程组的配置改成10 * 1。依然很慢,然后打开jmeter-server.log日志文件查看,发现slave一直试图连接一个陌生的IP“192.168.56.1”,但是连接不上报错了。

  • 最终原因:后面反应过来,在master上我有安装了虚拟机。而slave一直尝试的这个ip就是master机器上虚拟机的网卡、、、、、所以在吧master上的虚拟网卡禁用掉。就可以畅快运行了。

  • 问题来了: 为什么会这样???为什么slave会请求master所在机器上的虚拟机IP????

7. 补充

Q:关于分布式部署时候,master&slave的配置修改中 “server.rmi.ssl.disable=true”的修改,啥意思?为什么要改?
A:参考 官方资料,开始部署的时候只是发现如果不改为“true”会报如下错误:报错信息
如果认真看的话,会发现错误信息提示的关于keystore找不到之类的,结合官方资料如下
大概意思是指jmeter自4.0开始默认传输机制将使用SSL。SSL需要密钥和证书才能工作。必须自己创建这些密钥(出于安全考虑)。
这里报错的信息原因是:我们要使用jmeter的分布式功能,但是没生成密钥对!!!网上的解决问题的原因是简单粗暴的改配置禁用掉!!!(很多都没有说明原因)

Q:关于分布式部署下,如果master主机上安装了虚拟机,会导致master无法接收slave的执行结果?为什么slave会请求master所在机器上的虚拟机IP?
A:部署配置过程中并不需要在slave配置连接master的信息,可能需要看下jmeter的远程通信机制。暂时未找到真正原因,先放着… 回头看能不能补上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值