美文网首页
基于Jmeter的压力测试

基于Jmeter的压力测试

作者: 赵优秀 | 来源:发表于2021-03-03 18:14 被阅读0次

    一 . 基于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=<job_name>` 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的压力测试

          本文链接:https://www.haomeiwen.com/subject/zqtcqltx.html