jmeter配置环境变量
vi /etc/profile
export PATH=$PATH:/tmp/jmeter/apache-jmeter-5.4.1/bin
source /etc/profile

1、做接口测试,服务器是10台docker,目标是把10台docker的cpu压满。我有三台压力机,windows Server操作系统,4c8g配置。

经过尝试,每台压力机发起700vu,压力机cpu满,用并发数除以平均响应时间,算出tps应该是3600,但实际只达到了2200,响应时间不大,但tps却没有达到预期,这说明压力机的能力到头了,需要增加压力机。

jmeter的操作手册,官网写的很详细(官网关于分布式压测的讲解),过一遍windows下分布式测试的配置步骤:

所有机器在同一子网(因为jmeter的分布式调用是通过rmi远程调用,所以跨网段需要建立代理服务器。同一子网,就是大家用同一个网关,且子网掩码相同),配置相同的jmeter与jdk,把脚本的参数化文件放在各个压力机的相同路径下,

各个压力机,只启动jmeter-server.bat即可,jmeter-server.bat启动会报Server failed to start: java.rmi.server.ExportException: Listen failed on port:,这时修改jmeter.properties的server.rmi.ssl.disable=false,改为true。

找一台机器作为总控制,配置jmeter的bin目录下的jmeter.properties,改remote_hosts,写上各个压力机的ip,不用写总控制机自己的ip。

然后打开脚本,将脚本里的参数化文件路径,写成绝对路径。然后在运行菜单里,点击启动所有,这时总控制机会把脚本分发到各个压力机上运行,结果会自动收录到总控制机。

上面的方法是从机器的系统随机分配端口号,如果想指定端口号,需要修改从机的 jmeter.properties文件,并在主机的jmeter.properties里除了配ip还要配端口,具体参考

扩展:使用docker搭建自动伸缩的压力机集群。

2、被测试的服务器都在docker上,一台实例服务器,有多个docker容器,所以在进行性能测试时,不能使用top命令监控本机,而是通过docker stats 监控具体容器的cpu使用情况。docker stats的参数很少,无法形成实时的监控,需要找一下看有没有现成的docker资源监控软件,如果没有通用的可以用influxdb和grafana自己写一个。

8个最佳Docker容器监控工具

3、除了系统资源,docker下对jvm的监控,显然不如使用visualVM方便,另外,对应长时间的稳定性测试,无法长期监控jvm,这也需要有个监控软件。

Java visualVM监控docker容器中的java项目

jvisualvm+jmx监听docker容器中的jvm情况

4、bean shell运行报错信息不明显,查看详细报错

5、jmeter发起jdbc请求,不同的数据库要用不同的验证语句,不然会导致数据库连不上。数据库连接driverClass和jdbcUrl大全Jmeter--常用数据库validationQuery检查语句

6、jmeter发起jdbc请求,直接拼写sql是硬解析还是软解析?

  取决于query type。使用select statement是硬解析。目前java框架大都使用了绑定变量,属于软解析。jmeter要改成绑定变量,需要改成 prepared select statement (JDBC为什么要使用PreparedStatement而不是Statement),如图所示:

7、关于cookie

loadrunner进行http请求时,若服务器返回set-cookie,则后续请求会自动添加cookie。

jmeter的http请求,只要新建cookie配置,就会自动检测服务器的set-cookie并未请求添加cookie。

说明:jmeter中cookie管理器使用方式分两种

1. 自动:将cookie管理器添加到测试计划中,cookie管理器会自动记录指定域响应的cookie信息,并且在相同域中,下条请求会自动附加cookie信息

2. 手动:有时候需要附件指定cookie,将cookie管理器添加到测试计划中或指定线程组中,点击添加手动添加cookie名、值、域

注意:手动添加cookie时必须添加域(网站域名)

Jmeter使用http请求时长连接的建立与保持问题

8、Jmeter里用户定义变量不会随迭代变化,前置处理的用户参数可以随迭代变化。

9、jmeter 模仿each occurrence 不行;

   性能脚本要避免本地函数耗时过长,会使压力变小,tps不准确。

10、新建csv文件,可以通过txt改后缀,然后用记事本编辑。如果直接用xls改后缀,会读取乱码;
   做参数关联,若用正则,被参数化的值必须是(.*?),不然正则无效;

11、Linux上启动jmeter

登录linux压力机
压力机jmeter文件夹下有脚本和CSV文件;
cd到/jmeter/script脚本文件夹下,执行命令:
jmeter -n -t 要执行的脚本名称 -l /jmeter/result/结果名称.jtl
场景跑完后将结果下载到本地,在jmeter中打开结果进行统计;

12、jmeter测试压力机报错no buffer,大量time_wait。

time_wait是三次握手最后阶段,服务器已经完事了,客户端知道服务器完事了,变成这个状态,等一会然后自己close。

这说明服务器处理很快,压力机资源不够了。

jmeter本地默认的http取样器,用的是http4client,高级里面改成java,就会用线程池了,就不会报no buffer了。

13、jmeter二次开发jmeter二次开发官方文档

不同的请求引用不同的jar包,比如Apache JMeter Http、Apache JMeter Jdbc,具体可去mvn仓库找

14、jmeter自己写的Java请求,如果有报错,会导致脚本加载残缺。

15、vars的map只能存取字符串,所以在beanshell中做数字运算要引入math包转化一下,算完再转回去
import java.math.BigDecimal;
String b = vars.get("count");
double c = Double.parseDouble(b)/2;
vars.put("new",String.valueOf(c));

性能测试系列:Jmeter使用记录的更多相关文章

  1. 性能测试工具JMeter

    JMeter介绍     Apache JMeter是Apache组织的开放源代码项目,具有极高的可扩展性,是一个100%纯Java桌面应用,用于压力/性能测试.JMeter可以用于测试静态或者动态资 ...

  2. JMeter使用记录1 -- JDBC測试

    场景:使用jmeter对web应用和mysql数据库进行压力測试 JMeter是一款很强大的測试工具.能够用来測试web,数据库.从07年用过之后一直对它情有独钟,以下记录下在一个项目中对它的简单使用 ...

  3. 1 认识开源性能测试工具jmeter

    典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具jmeter. 1.jmeter是什么? A ...

  4. JMeter使用记录2 -- Web測试

    Web測试用例 新建线程组.配置起3线程,循环1次.1秒启动全部线程.进行login.循环1个主要页面的读写,并对另外一个主要页面进行读操作,最后logout并在aggregate graph/gra ...

  5. 性能测试—认识JMeter(一)

     性能测试—认识JMeter(一) <零成本web性能测试>第二章 JMeter基础知识总结和自己的理解 一.JMeter百度词条概念 Apache JMeter是Apache组织开发的基 ...

  6. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  7. 转 1 认识开源性能测试工具jmeter

    1 认识开源性能测试工具jmeter   典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具j ...

  8. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

  9. JMeter学习记录收藏

    1.如何进行一个简单的性能测试 2.JMeter各种功能名词解释,比较全 3.聚合报告分析 4.CSV文件参数化,名词解释 5.JMeter快捷键

  10. 01 jmeter性能测试系列_Jmeter的体系结构

    深圳文鹏教育jmeter 性能测试讲义 概念 元件:元件代表jmeter工具菜单中的一个子菜单,比如HTTP请求.事务控制器.响应断言等: 组件:一组元件的集合(一个或者多个),比如逻辑控制器中有事务 ...

随机推荐

  1. 开年!5 款令人惊艳的开源项目「GitHub 热点速览」

    朋友们开工大吉啊!我刚从假期模式切换回来,完全无心工作有些不在状态,比如开机密码错了好几次.闲话少叙,下面就让我们一起看看,春节这段时间 GitHub 上又出了什么有趣.好玩的开源项目. 今年上来就是 ...

  2. sliver生成木马.sh

    生成sliver木马多个步骤合成一个sh #!/bin/bash # date: 20230222 host_ip=$1 WORK_DIR=/opt/work rm -rf /root/.sliver ...

  3. [Android 逆向]旅行青蛙破解

    1. 旅行青蛙V1.0,4 apk 安装到手机,可以运行 2. jadx 打开apk 存在这两个dll ,说明是 unity开发的 3. 导出Assembly-CSharp.dll, 使用DnSpy ...

  4. 【图论#02】岛屿系列题(数量、周长、最大面积),flood fill算法的代码实现与优化

    岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...

  5. 【LeetCode哈希表#3】快乐数(set)

    快乐数 力扣题目链接(opens new window) 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程 ...

  6. AFNetworking整体框架简单整理

    一.AFNetworking整体框架是怎样的 1.UIKit集成模块 UIKit 2.请求序列化 Serialization 3.响应序列化 Serialization 4.会话 NSURLSessi ...

  7. 笔记本linux问题记录

    目录 UEFI笔记本无法引导进入操作系统 grub引导错误,无法进入系统 笔记本亮度不能保存 禁用独立显卡 KVM 解决nmcli dev 中的wlan0显示unavailable 杂项 UEFI笔记 ...

  8. 机器学习策略篇:详解训练/开发/测试集划分(Train/dev/test distributions)

    训练/开发/测试集划分 设立训练集,开发集和测试集的方式大大影响了或者团队在建立机器学习应用方面取得进展的速度.同样的团队,即使是大公司里的团队,在设立这些数据集的方式,真的会让团队的进展变慢而不是加 ...

  9. node.js在win7下安装,并测试是否安装成功

    1.node.js去官网下载,下载完,像平时安装软件一样 2.把下面的测试文件,放到安装目录下,本文是放到:D:\Program Files\nodejs下 var http = require(&q ...

  10. Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)

    目录 题面 链接 题意 题解 代码 总结 题面 链接 E. Tetrahedron 题意 从一个顶点出发走过路径长度为n回到出发点的方案总数 题解 考虑dp \(f[i][0|1|2|3]\):走了i ...