  

电商系统梳理拆解
电商系统性能方案拆解
模块级性能方案 -> 登陆场景测试
电商系统压测实战
性能测试基础知识回顾
电商系统压测实战
电商系统压测实战
电商系统压测实战
性能测试基础知识回顾
分享课题:电商系统压测实战
01
电商系统拆解梳理
分享课题:电商系统压测实战
02
电商系统性能方案拆解
分享课题:电商系统压测实战
03
JMeter 插件体系介绍
JMeter 插件体系介绍
JMeter 插件体系介绍
万物皆插件
JMeter 插件体系介绍
如何添加 Lib 库之外的插件
JMeter 常见第三方插件
分享课题:JMeter压测应用实战技巧
02
JMeter 插件安装介绍
Plugins Manager https://jmeter-plugins.org/install/Install/
JMeter 插件安装介绍
Plugins Manager
JMeter 插件安装介绍
3 Basic Graphs
JMeter 插件安装介绍
3 Basic Graphs
JMeter 插件安装介绍
3 Basic Graphs
JMeter 插件安装介绍
3 Basic Graphs
JMeter 插件安装介绍
Custom Thread Group
JMeter 插件安装介绍
Concurrency Thread Group
10个线程
60 s 时间达到最大线程
其中有 3 次阶梯平均增长
并在最大线程持续 60s
JMeter 插件安装介绍
Ultimate Thread Group
10个线程
60 s 时间达到最大线程
其中有 3 次阶梯增长
最后一次阶梯增长 5 个线程
并在最大线程持续 60s
JMeter 插件安装介绍
Arrivals Thread Group
10 QPS
60 s 时间达到最大 QPS
其中有 3 次阶梯增长
最后一次阶梯增长 5 QPS
并在最大 QPS 持续 60s
JMeter 插件安装介绍
Free-Form Arrivals Thread Group
可随意定制的 QPS 控制器
JMeter 插件安装介绍
Variables From CSV File
例如上堂课的需求
如何用 Data Reader 定制变量
JMeter 插件安装介绍
Redis Data Set
JMeter 插件安装介绍
Redis Data Set
docker run -d --name redis -p 6379:6379 redis
Redis-cli
Keys *
Lrange Jmeter 0 100
JMeter 插件安装介绍
Autostop Listener:
尤其在 CI 运行中,或线上压测时,需即时止损
JMeter 插件安装介绍
Response Times Distribution
JMeter 插件安装介绍
PerfMon Metrics Collector
JMeter 插件安装介绍
实战,大家实验一下以上插件的效果
JMeter 首个自己的插件
分享课题:JMeter压测应用实战技巧
03
Jmeter 组件 GUI 约定。
Jmeter 中的 GUI 代码严格地与测试元件代码(这里指逻辑控制代码)分离。
测试元件类,
GUI类。
GUI元素继承抽象类:
AbstractSamplerGui
AbstractAssertionGui
AbstractConfigGui
AbstractControllerGui
AbstractPostProcessorGui
AbstractPreProcessorGui
AbstractVisualizerAbstractTimerGui
Redis CSV Element
https://github.com/hgwz/jmeter-plugins.git
AutoStop Element
ResponeTime Disturibution Element
BackendListenerClient, InfluxDB + Grafana
InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析
资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,
随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便
https://github.com/influxdata/influxdb
Influx DB 安装:
docker run -d -p 8083:8083 -p 8086:8086 -e ADMIN_USER="root" -e
INFLUXDB_INIT_PWD="root" -e PRE_CREATE_DB="testerhome" --name
influxdb tutum/influxdb:latest
BackendListenerClient, InfluxDB + Grafana
查看 Jmeter InfluxDB 数据
curl 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testerhome" -
-data-urlencode "q=SHOW SERIES"
SHOW TAG VALUES FROM "jmeter" WITH KEY = "application"
http://localhost:8083/
show MEASUREMENTS
select * from Testerhome
BackendListenerClient, InfluxDB + Grafana
Grafana 安装和介绍
docker run -d --name=grafana --link influxdb:influxdb -p 3000:3000
grafana/grafana
http://localhost:3000
Add InfluxDB DataSource
import from https://grafana.com/dashboards/5496
BackendListenerClient
BackendListenerClient
BackendListenerClient
BackendListenerClient
BackendListenerClient
BackendListenerClient
完成第一个自己的 ElasticsearchBackend Client Plugin
完成第一个自己的 ElasticsearchBackend Plugin
实战演练
Git clone https://github.com/hgwz/perf-es.git
ElasticSearch+FileBeats+
Kibana
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.5.1-darwin-x86_64.tar.gz --no-
check-certificate
tar -xzf filebeat-oss-7.5.1-darwin-x86_64.tar.gz
Vi filebeat.yaml
Docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -idt -p 9200:9200 -p 5601:5601
nshou/elasticsearch-kibana
View Result in Kibana
JMeter 源代码编译及开发
分享课题:JMeter压测应用实战技巧
04
JMeter 源代码编译及开发
5.1 以下 Ant 方式:
https://github.com/apache/jmeterDownload source from
https://archive.apache.org/dist/jmeter/source/apache-jmeter-5.1_src.tgz
tar -xzf apache-jmeter-5.1_src.tgz
Import From Idea
Ant Download Jar
Module Setting Setup: Add Source:protocol,
Update dependence
Ant Build
Open -> NewDriver => build configuration
Run
JMeter 源代码编译及开发
修改配置:用命令行修改2个文件名,
eclipse.classpath改成.classpath,eclipse.project改成.project
Cd apache-jmeter-5.1 Path
$ mv ./eclipse.classpath .classpath
$ mv ./eclipse.project .project
Do Import
JMeter 源代码编译及开发
JMeter 源代码编译及开发
Ant download_jars
JMeter 源代码编译及开发
在项目上右键打开 Open Module Settings,在项目 src 下点击 protocol 文件夹,再点击上
Sources 按钮,点击 Apply
点击 Dependencies,删除所有报错的 jar 包;
重新添加新下载的 jar 包:右侧 + ,选择 JARs or directories,依次选择源码目录下的 lib
目录和 lib 下的几个目录,Apply
重新双击ant build里的install
JMeter 源代码编译及开发
JMeter 的启动类是 NewDriver,双击shift键,搜索到这个类,运行会报错找不到路径。
JMeter 启动类中默认找 parent 目录,
需要手动在 VM options 中配置 Jmeter 运行时的 home 路径。
填入 -Djmeter.home= /Users/xs/Desktop/TesterHome/Demo/6/code/apache-jmeter-5.1
Org.apache.jmeter.NewDriver
JMeter 源代码编译及开发
实践加载
JMeter 源代码编译及开发
5.3 Gradle
Mac
Idea 2018 以后版本,open build.gradle.kts
分享课题:JMeter压测应用实战技巧
05
JMeter 源码解析
JMeter 源码解析
New Driver
JMeter 源代码编译及开发
HashTree
JMeter 源代码编译及开发
org.apache.jmeter.JMeterEngine
+ org.apache.jmeter.engine.StandardJMeterEngine
JMeter 源代码编译及开发
JMeter ThreadGroup
JMeter 源代码编译及开发
JMeter 分布式
JMeter 源代码编译及开发
实战
Java 调用 Jmeter https://github.com/hgwz/javaRunner.git
感谢参与,欢迎填写调查问卷领取公开课PPT
请添加小助手,回复「公开课」