9.jmeter监控技术实战

jmeter监控技术

性能测试中监控的意义

性能测试的目的:通过技术手段,提前发现项目性能问题,优化并解决

  • 性能分析:
    • 1、依据什么分析
    • 2、怎么分析

项目中的监控方案

收集器方式

  • 实时收集且传输

  • 离线传输
    top指令---实时的,没有历史记录,需要盯着看,不直观
    图 1

  • 监控原理:
    图 2

    • 间谍:收集器,需要服务器权限,要间谍跑起来,收集信息
    • 情报员:接收器
  • 方案一:serverAgent监控

    • 将serveragent-xxxx.jar上传到被测服务器解压,进入目录
    • Windows:双击serverAgent.bat启动
    • Linux:执行serverAgent.sh启动
    • 默认使用4444端口,出现如下情况即服务端启动成功

图 4

图 3
监控效果:
图 5

Linux启动:
图 6

chmod 777 startAgent.sh
图 7
加载一个文件来存储结果,如果加载报错,直接点确定
图 9

选择覆盖
图 10

点击空白处,可以监控具体的进程
图 8

图 11

  • 方案二:nmon监控
    • 离线方案:通过nmon收集器收集数据--等场景运行完成之后,使用分析器,离线分析
    • 实时方案:grafana+nmon_exporter--实时---不建议
    • 1、解压并获取对应平台的nmon工具文件
      • tar -zxf nmon16e_mpginc.tar.gz
      • mv nmon_x86_64_centos7 nmon----重命名
    • 2、本机使用excel分析工具NmonAnalyser

图 12

启动nmon
图 13
空白处输入cmdn
图 14

    * 1.11生成nmon报告
      * 1、nmon -s20 -c3 -f -m /usr/local/nmon/nmon_output
      * 参数解释
        * -s20 每20秒采集一次数据
        * -c3 采集3次,即为采集一分钟的数据
        * -f 生成的报告文件名中包含文件创建的时间 format
        * -m 生成的报告文件的存放目录
      * 生成的文件名如下:xxx_210620_0118.nmon
        xxxx 是机器的主机名

图 15
把采集到的文件下载到windows系统
* 在windows打开分析工具
* 然后导入采集到的文件
* 自动生成图形文件,保存到指定的路径

图 16

图 17

  • 方案三:grafana监控平台
    • 方案简介:
      • 公司大部分服务器,项目都在Linux系统下部署,我们需要了解Linux环境下搭建可视化监控平台
    • 需要具备什么样的技能:
      • 1、常用的Linux指令技能
      • 2、监控平台的工作原理
        • 数据采集--node_exporter
        • 数据存储--Prometheus
        • 数据展示--grafana

图 18

优秀监控方案所具备的特性

  • 1、准确性高
  • 2、时效性好
  • 3、可视化高
  • 4、历史数据
  • 5、警告通知---工具联通叮铃,发邮件,发短信--告警触发

windows资源监控

  • 方案一:jconsole
    • jdk的bin目录下面有自带的资源监控平台--jconsole.exe

双击jconsole.exe,启动监控平台,可以选择需要监控的服务。可以是本地的tomcat进程,也可以是远程的服务器。这里我选择了监控jmeter进程。
图 21

  • 图 19
    在上方的概览中,我们可以看到堆内存,线程,类,cpu四个监控模块。时间可以自由选择。
    在VM概要中,我们可以直观的看到各种性能数据。包括jmeter分配的线程池大小。

图 20

在内存选项中,我们可以选择分别监控新生代,老年代,eden,space这些堆内存空间。同时可以手动gc内存。

图 22
在线程中,我们可以监控所有已加载的线程,同时一键检测线程死锁。
图 23

  • 方案二:jmc工具
  • 可以监控本地和远程机器

图 24
jmc的功能类似于jconsole,不过仪表盘式的外观和色彩看起来更加漂亮。

在底部的按钮可以针对堆内存,cpu,线程等进行性能诊断

  • 方案三jvisualvm工具
  • 可以监控本地和远程服务

jvisualvm的功能更加强大一些,除了常规的数据监控之外,还可以对线程进行dump(只能针对本地,不能对远程服务进行dump)

jdk自带的监控工具是丰富多彩的,我们可以根据自己的需求去选择不同的工具。

原文地址:https://www.cnblogs.com/xiehuangzhijia/p/14966087.html