#推荐的国外成熟方案 JMeter-kubenetes 方案 或 腾讯云的 JMeter-Suite
1.
北京健康宝 和 广州健康码 都使用的JMeter-kubenets。
https://github.com/kubernauts/jmeter-kubernetes
https://blog.kubernauts.io/load-testing-as-a-service-with-jmeter-on-kubernetes-fc5288bb0c8b
2.
Jmeter-Suite:云原生压测方案可以一键部署了!
https://cloud.tencent.com/developer/article/1753788
腾讯云「容器服务」中可以直接在 应用市场 中安装 Jmeter-Suite。
# 稳定性测试 vs 压力测试
# 按量付费云端搭建Jmeter分布式压测和监控系统
搭建 Apache Jmeter 分布式压测与监控,真那么难搞定?|实战干货
五星推荐 https://juejin.cn/post/6844904008155414536
基于Docker部署的Jmeter分布式压测,镜像都做好啦。(但没有用Window做master)
四星推荐 https://developer.aliyun.com/article/769520
搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)
五星推荐 https://codingnote.cc/p/159265/
关于Jmeter长时间压测的可视化监控报告
两种后端Backend Lisener,也讲了大规模时GUI模式不靠谱之处
https://www.jianshu.com/p/4e4b198c858b
jmeter压测实时监控平台
有一个后端监听器
https://www.mdeditor.tw/pl/2Nez
可以看到,Jmeter默认选中的Implementatin是 GraphiteBackendListenerClient ,它是Jmeter 2.13就开始提供了;在Jmeter 3.2时又加多了一个 InfluxDBBackendListenerClient ,哎~这两者有什么区别呢?后面会讲到!
https://www.cnblogs.com/poloyy/p/12219145.html
一些细节:
1)如果是做压力测试,那最被压测系统的监控用Zabbix可能就不太行,因为Zabbix监控收集数据的评率是1分钟,太长了,说不定压测完了,Zabbix还没有收集呢。
不过稳定性测试,就是那种一测就一直不停跑几个小时的那种测试,用Zabbix合理。
2)包含自动拿IP的脚本
3)
机器分布:
1、1台Window 2012的机器安装master,UI模式,测试计划的编辑、测试等。
2、1~N台Linux机器做 压力机(slave)
# 【单机模式 vs 分布式模式】 vs 【GUI模式 vs CLI模式】
Jmeter系列(39)- Jmeter 分布式测试
https://www.cnblogs.com/poloyy/p/13233055.html
1个GUI master + N台Slave
master做管理,但也可以选择参与工作。
master用来做jmx脚本分发,在master上改脚本后,各个Slave会自动更改。但是不会做参数文件分发,比如一个csv配置文件,这个需要手动上传到各个slave上!
master和slave们通过RMI通信,所以只能在一个子网内。
master对应jmeter命令,slave对应jmeter-server 命令。前者有GUI和CLI两种模式,后者不区分,只有CLI模式。
工作模式 gif 图片:
https://img2020.cnblogs.com/blog/1896874/202007/1896874-20200707190341224-152969150.gif
# GUI 模式 vs CLI 模式
master对应的有GUI模式和CLI模式。前者有UI可看,主要用于创建测试计划和调试脚本。
后者CLI模式是为了节省资源,或者在没有图形界面的Linux上跑。
所谓GUI模式和CLI模式, 就是一个参数 -n 的事情(表示 no-gui 的意思)
#
测试计划的作用
* 测试计划描述了 Jmeter 在执行时,一系列的步骤
* 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】
cli模式
# 监听器——结果收集并显示为各种格式
监听器不够,各种plugin监听器
https://www.cnblogs.com/poloyy/p/12912781.html
一般做负载测试,会监控服务器资源、活动线程数、响应时间、TPS等等,所以加了一堆监听器
这些结果就是通过监听器拿到的,官方监听器不够就去插件中找
这里是一个简单的 负载测试 的例子
https://www.cnblogs.com/poloyy/p/13196058.html
PerMon Metric Collector 这个监听器为例: 他作为Jmeter 监听器存在,当时是看结果的,看什么的结果,看被压测的服务器的性能指标(比如CPU、Memory之类的),怎么看的?其实在服务器上安装一个ServerAgent,然后在监听器中通过读取ServerAgent暴露出的端口获取数据。。。
TODO
## 压测结果图形化
——已下是精华——
.jmx
.jtl : 压测结果。 可以再进一步转换为 html 文件,也就是压测报告。
.html :HTML版本的压测包括,可以通过 jtl 结果生成。
监听器其实是在GUI模式下的桌面端。
耗费资源不说,还并不那么好看。
其实有HTML版本的更好看的dashboard:
Jmeter系列(42)- 详解 Jmeter 图形化 HTML 压测报告之 DashBoard 模块
https://www.cnblogs.com/poloyy/p/13278920.html
Jmeter系列(43)- 详解 Jmeter 图形化 HTML 压测报告之 Charts 模块
https://www.cnblogs.com/poloyy/p/13280899.html
### HTML压测报告包括:dashboard、charts、自定义图表3种。
dashboard——Statistics 统计表, 就是最常见的那个 p95, Latency、错误率啥的。
Errors 错误表
提供了所有错误及其在总请求中所占比例
### HTML图表之Charts 介绍
* 包含了各种详细信息图表,比 GUI 模式的图表好看且易懂多了!
* 做性能测试,如何发现是否有性能瓶颈?必须从结果图表中找到鸭!
* 而 html 报告将性能测试可能需要用到的图表都加进去了,可谓是6666
#### Charts 之 Over-Time 时间变化趋势图
一共有 6 个图表,相比dashboard——Statistics 统计表是综合结果来说,Charts图表是over-time,也就是时间变化趋势图,按照时间的Rt、按照时间的吞吐量,按照是缠绵的 Latency,按照时间的6种指标
1. Response times Over Time : 相比
2. Response times Percentiles Over Time
3. Active Threads Over Time
4. Bytes throughput Over Time
5. Latencies Over Time
6. Connect Time Over Time
#### Charts 之 Throughput
吞吐量相关的6种图表
1. Hits Per Second
2. Codes Per Second
3. Transactions Per Second
4. Total Transactions Per Second 就是那个 TPS 啊
5. Response Time Vs Request
6. Latency Vs Request
#### Chats 之 Response Time
响应时间相关的4种图表
1. Response Time Percentiles
2. Response Time Overview
3. Time Vs Threads
4. Response Time Distribution
都毫无疑问的,Charts都有对应的 监视器版本,HTML只是更好看,浏览器可看而已。
Jmeter系列(44)- 详解 Elapsed time、Latency、Connect Time的含义
https://www.cnblogs.com/poloyy/p/13283059.html
既然HTML更好看,又方便。
那完全可以通过 CLI模式生成html,然后在浏览器查看。
所以可以方便的在云上搭建一套压测环境,
### 我不但要详细的报告,我还要是实时的
从 监听器GUI端图像 => 性能测试报表HTML ,虽然满足了。
但是并不是实时的,如果想实时??
那用另外一种监听器——Backend Lisenter,他的作用是把数据写入时序数据库Indluxdb.
然后再用 grafana 的某个dashboard暂时即可。
搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用) https://codingnote.cc/p/159265/
Backend Lisener 有两种
1)测试人员在本地GUI模式下编写 .jmx,然后上传到 Linux服务器上的master noGui里。
或者
就在云上的 Window 机器上编写。
2)浏览器中grafana实时查看进度
3)可选。业务系统自己的APM或者promethues或者Zabbix或者dstat、或者glances等查看被测系统的监控指标。
——以上是精华-
# 本机模式 和 client-server模式
# 基础线程组 和 更牛逼的 ”并发线程组Concurrency Thread Group“
https://www.cnblogs.com/poloyy/p/12782140.html
Thread Group的简单理解
* 线程组是一个测试计划的开始点
* 在一个测试计划中的所有元件都必须在某个线程组下
* 线程组决定 Jmeter 执行测试计划的线程数
Ramp-Up时间(秒)
* 预期线程组的所有线程从启动-运行-释放的总时间
* ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
* 特别注意:在负载测试的时候,尽量把ramp up设置大一些,让性能曲线平缓,容易找到瓶颈点
循环次数
* 每个线程循环执行的次数,默认一次【便于理解:线程的迭代次数、重复发起请求的次数】
* 如果设置为永远,那么 jmeter 将以最大的可能去发送请求,以此测试出最大并发数 相当于一个用户在不听的发出请求
总结:线程组的线程数并不表示实际并发量。
因为线程不一定是全部马上启动的(各种设置)
要被取代的「阶梯加压线程组」Stepping Thread Group
https://www.cnblogs.com/poloyy/p/12840997.html
Jmeter系列(11)- 并发线程组Concurrency Thread Group详解
https://www.cnblogs.com/poloyy/p/12845465.html
# 控制器
Controllers 简介
* Jmeter有两种类型的控制器:Samplers(取样器)和Logical Controllers(逻辑控制器);它们驱动着测试的进行
* 取样器:让Jmeter 发送请求到服务器
* 逻辑控制器:可以自定义决定发送请求的时机的逻辑
* 控制器是为了控制取样器的执行条件
# Timer定时器——避免短时间发出太多请求,把服务器给打死了
# Assert
压力测试时,不要添加断言,因为为显著增加响应时间,拉低最终结果值,还会占用系统资源
#
Jmeter系列(19)- 前置、后置处理器的入门介绍
https://www.cnblogs.com/poloyy/p/13153903.html
Jmeter系列(26)- 详解 JSON 提取器
提取前一个登录接口的token值,给后面的API用
https://www.cnblogs.com/poloyy/p/13177102.html
# 配置原件:
https://www.cnblogs.com/poloyy/p/13157732.html
把 csv 文件当做一个配置源,
https://www.cnblogs.com/poloyy/p/13188880.html
Jmeter的 __P :跨Windows、Linux平台
https://www.cnblogs.com/poloyy/p/13189198.html
把计数器当做配置Counter:循环生成特定步长long
与用户相关、全局、
https://www.cnblogs.com/poloyy/p/13193447.html
# 用Jmeter测试MySQL
1.首先用 配置原件 配置JDBC链接信息
https://www.cnblogs.com/poloyy/p/13182706.html
2.然后设置 抽样器为JDBC request(相对于其他的HTTP request)
https://www.cnblogs.com/poloyy/p/13184602.html
就是因为Jmeter支持 N种抽样器(也就是N种用法, 发HTTP、发JDBC、发HTTP、发SOAP )
3.把JDBC result 提取出来,比如提取出来放到变量里,这样就可以给介休来的HTTP请求啥的使用了。
https://www.cnblogs.com/poloyy/p/13187260.html
4.
# 取样器Samper
# 逻辑控制器 Logic Controller
Jmeter系列(36)- 详解 Loop Controller 循环控制器:配合Counter玩
https://www.cnblogs.com/poloyy/p/13198812.html
Jmeter系列(37)- 详解 ForEach控制器:
https://www.cnblogs.com/poloyy/p/13230175.html
# 监控服务器性能
能配合监听器玩的ServerAgent
https://www.cnblogs.com/poloyy/p/13196058.html
Jmeter系列(38)- 详解性能监控工具 nmon
https://www.cnblogs.com/poloyy/p/13225561.html