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. MySQL基础之DDL语句

    讲解SQL语句三大分类和每个分类的SQL使用入门. 使用的是数据库是:MySQL 8.0.27 1.SQL分类   DDL(Data Definition Language)语句:数据定义语句. 用途 ...

  2. windows网络流量监控

    NPCap 官网 https://nmap.org/npcap/ 这是抓包必须先安装的工具,具体的原因可以看 https://github.com/buger/goreplay/wiki/Runnin ...

  3. Swoole从入门到入土(6)——TCP服务器[粘包]

    在了解Swoole下如何处理粘包问题之前,我们需要先了解什么是"粘包".我们以下面这张图进行普及: 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是 ...

  4. Maven应用常见问题

    在Spring Boot项目中打包指定类为启动类 <build> <plugins> <plugin> <groupId>org.springframe ...

  5. 【Azure 应用服务】更新镜像后并重启应用服务,部署日志始终没有出现加载新镜像成功的日志

    问题描述 在App Service中部署镜像文件,发现镜像一直没有部署,重启App Service服务也无效果. DockerFile如下: FROM crunchgeek/php-fpm:7.0 # ...

  6. IDA sp-analysis failed

    目录 概述 问题描述 排查过程 概述 学习任何一个技术,都是会遇到各种问题的,那么现在就有 sp-analysis failed 问题描述 IDA在载入文件之后,出现如下注释 但是可以正常F5,不过只 ...

  7. 关闭mysql上锁的表/数据

    一.输入查询语句,查看是否有数据被上锁 select * from information_schema.innodb_trx; 取 trx_mysql_thread_id 字段值 kill < ...

  8. RocketMQ(5) 订阅关系的一致性规范

    多个消费者组订阅了多个Topic,并且每个消费者组里的多个消费者实例的订阅关系应该保持一致. 例如下消费关系, 不同的消费组,消费不同的队列,相同的消费组订阅相同的队列,tag 错误示例: 一个消费者 ...

  9. 17. Class字节码指令解析

    ## 1. 概述 官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html Java 字节码对于虚拟机,就好像汇编语言对于 ...

  10. [笔记]git pull vs git pull --rebase

    git pull vs git pull -rebase 背景 最近在实际开发过程,之前一直使用git pull 去更新该分支的代码,之前认为一旦pull 操作产生新的节点是对合并操作的一个记录,但是 ...