基于Jmeter的压力测试

一 . 基于Jmeter的压力测试 使用说明

1. jmeter简介

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

2. jmeter下载

根据需要下载不同版本,平台

3. jmeter使用教程

  1. 详细使用可参考 官网文档

  2. 教程 : http://www.jmeter.com.cn/2747.html

4. windows版本使用

1. 解压安装配置

下载压缩包: apache-jmeter-5.4.zip 解压到任一文件夹. 使用需要本地配置好JDK环境.此处不做详细介绍.

打开解压文件夹:

image-20210201144503550.png

双击执行bin目录下 jmeter.bat 启动jmeter.

运行成功:

image-20210201145118238.png

2. 安装插件

  1. 将jar包 jmeter-plugins-manager-1.6.jar 复制到jmeter解压目录 apache-jmeter-5.4\lib\ext下 重启jmeter

  2. 重启后看见右上角有该图标,证明插件下载工具安装成功


    image-20210201152123683.png
  3. 开发插件下载 perfmon

    image-20210201152825047.png

下载完成后重启

3. 新建线程组 及相关组件

image-20210201145346503.png

1. 线程组

image-20210201145529138.png
  1. 主要修改 线程属性 下配置

  2. 线程数:请求数

  3. Ramp-Up(秒) : 多长时间内启动完线程.

  4. 循环次数: 循环发送线程的次数

2. 聚合报告

image-20210201150224787.png

各列表项说明:

点这里

3. Tcp sampler(Tcp取样器)

image-20210201150604955.png

TcpClIent calssname : org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl

IP端口 填需测试的地址

4. jp@gc - PerfMon Metrics Collector

服务器资源监控

image-20210201153746662.png

主要监控以下四项:

  1. CPU : user

  2. Memory : used

  3. Disks I/O : writes

  4. Netmork I/O : bytesrecv

    效果如下:

100+16+32.png

二. 其他相关软件安装(windous)

1. Grafana

1.简介

grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。

grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。

2. 教程

  1. 详细使用教程可参考官网:https://grafana.com/

  2. 教程: https://blog.csdn.net/bbwangj/article/details/81109615

3. 启动

  1. 下载 grafana-7.3.7.windows-amd64.zip 解压:
image-20210201163703128.png
  1. cmd执行bin/grafana-server.exe

  2. 浏览器访问http://127.0.0.1:3000 , 默认用户和密码均为admin


4. grafana 添加相关仪表盘模板

在grafana官网https://grafana.com/grafana/dashboards搜索相关仪表盘ID


image-20210202142033542.png

点进去 获取该仪表盘ID标识


image-20210202142145988.png

在本地grafana上 加载该ID 仪表盘(其他类似)


image-20210202142514611.png

截取其中一个仪表盘做展示:


image-20210202142747795.png

2. Prometheus

1.简介

Prometheus 是一个开源的服务监控系统和时间序列数据库。

为grafana提供仪表盘数据

2.系统架构图

082749_47Dp_5189.png

3.下载

访问官网https://prometheus.io 下载相关平台版本

4.教程

详细教程见官网用户手册https://prometheus.io/docs/prometheus/latest/getting_started/

教程:https://zhuanlan.zhihu.com/p/101184971

5.安装启动

1.下载windous压缩包 prometheus-2.24.0.zip ,解压 如下:

image-20210202140050992.png

2.配置文件范例

global:
 scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
 evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
 # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
 alertmanagers:
 - static_configs:
 - targets:
 # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
 # - "first_rules.yml"
 # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
 # The job name is added as a label `job=` to any timeseries scraped from this config.
 - job_name: 'prometheus'

 # metrics_path defaults to '/metrics'
 # scheme defaults to 'http'.

 static_configs:
 - targets: ['localhost:9090'] //服务启动
 labels:
 instance: prometheus

 - job_name: 'mysql'  //mysql服务监控点  数据来源于 mysql-exporter
 static_configs:
 - targets: ['100.0.0.xxx:9104']
 labels:
 instance: mydb
 - job_name: 'mysql_xx'
 static_configs:
 - targets: ['100.0.0.xxx:9104']
 labels:
 instance: mydb_xx

 - job_name: 'linux' //linux服务监控点 数据来源于 node-exporter
 static_configs:
 - targets: ['100.0.0.xxx:9100']
 labels:
 instance: server
 - job_name: 'linux_xx'
 static_configs:
 - targets: ['100.0.0.xxx:9100']
 labels:
 instance: server_xx
 - job_name: 'linux_xx虚拟机'
 static_configs:
 - targets: ['100.0.0.xxx:9100']
 labels:
 instance: server_xx

 - job_name: 'windous' //windous服务监控点 数据来源于 windous-exporter
 static_configs:
 - targets: ['100.0.0.xxx:9182']
 labels:
 instance: server_windous

 - job_name: 'redis'  //redis服务监控点 数据来源于 redis-exporter
 static_configs:
 - targets: ['100.0.0.xxx:9121']
 labels:
 instance: redis
 - job_name: 'redis_xx'
 static_configs: 
 - targets: ['100.0.0.xxx:9121']
 labels:
 instance: redis_xx

cmd 运行 prometheus.exe

image-20210202140648228.png

三. Linux上软件安装

1. Jmeter ServerAgent

安装于 linux 用于为 jp@gc-PerfMon Metrics Collector 提供数据. 默认端口 4444

教程:https://www.cnblogs.com/xioawu-blog/p/11171301.html

  1. 下载

    下载地址https://github.com/undera/perfmon-agent

  2. 服务端安装启动

    解压


image-20210202144159535.png

进入解压目录启动


nohup ./startAgent.sh >> nohup.out 2>&1 &

2.redis-exporter

  1. 下载

    GitHubhttps://github.com/oliver006/redis_exporter/releases/tag/v1.16.0

  2. 教程

    https://www.cnblogs.com/wgx519/p/13951439.html

3.node-exporter

  1. 下载

    GitHubhttps://github.com/prometheus/node_exporter/releases/tag/v1.0.1

  2. 教程

    https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_58_prometheus_node_install.html

4.mysql-exporter

  1. 下载

    GitHubhttps://github.com/prometheus/mysqld_exporter/releases/tag/v0.12.1

  2. 教程

    https://blog.51cto.com/viphyy/2446544

四. 记录监控结果

数据采集子系统接口服务器性能指标:

100+16+32.png

Mysql/Redis数据库服务器性能指标

clip_image004.png

Redis性能指标

clip_image006.png

Mysql性能指标

clip_image008.png

数据采集子系统接口性能指标

clip_image010.png

你可能感兴趣的:(基于Jmeter的压力测试)