Jmeter-day4

评判系统的性能好坏,通过性能指标,性能指标是客户性能需求分析后获取,或者客户对性能指标直接给出具体指标项。

常见的性能指标:响应时间(通过时间来反馈系统的反应速度);

用户数(在线数、并发数,通过系统可以承载的用户数量来判断性能);

吞吐量、吞吐率、点击量、点击率 都是来评判软件系统的处理能力;

                资源的利用率(通过软件对系统资源的消耗来评判性能)

Jmeter 对服务器资源的监控

利用 jdk 自带的监控工具

对服务器资源进行查看:JDK的目录下 bin 下面 jconsole.exe

Jmeter-serverAgent 监控

实现步骤:

  1. 下载需要使用的插件管理器   jmeter-plugins-manager-1.6.jar   的jar 包和 ServerAgent-2.2.3.zip 包
  2. ServerAgent-2.2.3.zip 进行解压缩,放在被监控服务器上,启动监控

注意:启动的时候出现闪退,是因为解压包的时候,解压好的程序外面多了一层同名的目录。

  1. 插件管理器  jmeter-plugins-manager-1.6.jar 的jar包必须放在 jmeter的安装目录下的 lib 目录下的 ext 目录中,重启 Jmeter,在options 选项下,会多出一个菜单“plugins manage”,选择需要的插件进行安装,安装步骤:

  1. 我们需要的插件是:Permon(servers Performance ……)
  2. 插件安装成功后,会自动重启jmeter,在监听器中可以看到多了一个监听类型  “jp@gc - PerfMon Metrics Collector  ” ,用来查看资源监控的。

  1. 打开已创建好的测试计划或者新建测试计划,添加监听器:jp@gc - PerfMon Metrics Collector

  1. 配置需要监听的设备的IP 和监听项(监控的资源类型项),默认端口后 4444,确保端口没有被占用

  2. 如果监控的是远程设备,需要把远程服务器上的两个服务打开(以 windows 为例):

  3. 并且把 “ServerAgent-2.2.3.zip”包解压缩,放在 “被监控的服务器上”,并且启动监控(双击 startAgent.bat),就可以收集远程服务器的资源了。

利用 nmon 监控专门监控Linux服务器

分布式测试

背景:使用jmeter进行性能测试的时候,对于高频的大量的数据并发(比如10000或者更多并发),单台电脑的配置(CPU或者内存)可能无法支持,需要进行分布式测试(客户端压力分摊),也叫做客户端负载均衡。

分布式原理

  1. jmeter分布式测试的时候,选择其中一台机器作为主控机器(controller/master),其它机器作为执行机(分摊机器)。
  2. 执行时,主控机器会把脚本发送到每台执行机器上,执行机器拿到脚本,开始执行(负责跑脚本),执行机器在运行时,不要启动GUI界面(实质上用的就是命令模式执行脚本)。
  3. 执行完以后,执行机器会把结果回传给主控机器,主控机器就收集所有的执行机器的数据信息进行汇总。

主控机器:生成脚本,调试脚本,汇总数据

执行机器:运行脚本,回传数据给主控机器

主控机器也可以和执行机器一并执行脚本。

实现步骤

  1. 执行机器的设置
  1. 在执行机器上安装 jdk ,jmeter ;(主控机器和执行机器上的版本要完全一致)
  2. 必须配置环境变量:JMETER_HOME;
  3. 启动 bin 目录下:jmeter_server.bat;(否则,主控机器无法连接到执行机器,无法实现远程启动)

问题:提示无法启动,请按任意键/文件找不到….

解决:

1、找到执行机器上的 C:\apache-jmeter-5.2.1\bin 目录中的配置文件 jmeter.properties

问题1:远程执行成功,取样器结果是绿色,但是查看结果树中,响应结果为空白。

第一步:打开主控机的jmeter--bin目录下的jmeter.properties文件

第二步:查找到mode=Standard 项

  1. 修改  #server.rmi.ssl.disable=false ,去掉 # ,将 false 改为 true,重启 jmeter-server.bat

  2. 重启以后,查看命令窗口,启动成功

    2、主控机器的设置

            1、准备测试脚本

            2、修改配置文件:jmeter.properties ,修改 ip 和端口号,在文件中查询

    Remote Hosts,原来默认值是 remote_hosts=127.0.0.1,表示就是本机,需要修改 Hosts信息;

            3、hosts 格式:执行机 ip : 端口号,执行机2号 ip:端口号….默认端口号 1099,端口号还可以自定义,执行的时候,确保端口号没有被占用。

  3. 重启 jmeter-server.bat;
  4. 重启主控机器的 jmeter.bat, 运行—》远程启动,即可以实现分布式测试。

 第三步:将其前边的注释去掉,然后保存重启jmeter,再次运行远程机器,就可以看到数据了

 问题2:远程启动执行设备以后,卡死,结果树没有反应,没有时间显示,日志显示

 使用ipconfig查看服务器IP发展239.1VMware Virtual Ethernet Adapter for VMnet1虚拟机的IP),并非是网站的物理机器的IP,所以结论就是发请求的时候找的服务器的IP错了一直发请求一直连不上解决办法禁用虚拟机网络

  1. 分布式测试小结
  1. 主控机器和执行机器的JDKJmeter版本必须一致,一模一样
  2. 如果会用到csv参数文件,需要将参数文件在每台执行机器上都拷贝一份过去,并且文件存放的路径和主控机器上脚本中设置的路径保持一致。比如都放在D:\
  3. 如果要每台执行机器上的参数值不一样,仍然是 要同名同路径的参数文件拷贝过去,只是文件中具体的参数值不一样即可。
  4. 自定义端口
  5. 在执行机器中设置,找到 bin目录下参数配置文件 jmeter.properties,修改两个参数

配置项:

默认值分别为 1099 和 4000

#server_port=1099

#server.rmi.localport=4000(也可以不修改)

自定义修改:1000 或者别的未被占用的端口,并且去掉注释符 # ,保存,主要是修改

Server_port 的值。

  1. 重启 jmeter-server.bat
  2. 修改主控机器上的配置信息:remote_hosts=执行机器IP:自定义的端口
  3. 重启jmeter.bat,运行—》远程启动,可以看到端口号发生变化了
  4. 命令启动分布式测试

参数r表示启动所有远程机器

C:\apache-jmeter-5.2.1\bin>jmeter -n -t D:\sunsun\jmeter\测试计划分布式脚本.jmx

-r-l D:\sunsun\jmeter\report1\rept.jtl -e -o D:\sunsun\jmeter\report1\html

备注: 参数 r 表示的是远程启动所有机器,不能够选择部分执行机执行,如果只需要一部分代理机器执行脚本,修改主控机上的配置文件 remote_hosts 内容,去掉不需要执行的机器即可。

性能测试报告

      编写性能测试报告

        测试报告的内容大纲:目的、项目简介、测试过程、测试结果、测试总结

        性能测试报告内容:概述、测试环境、测试目标(性能指标)、测试方法、测试结果与分析、测试结论……

        注意:测试结果和分析,必须按照不同的测试场景进行描述。

     测试报告第二种方式:由jmeter 直接生成 html 网页版测试报告

      方法一:tools à html report 功能(5.2版本以上)

前提:通过命令方式进行测试,本地生成 .jtl报告文件,CSV文件也可以。

      方法二:用 jmeter 命令直接生成html 报告

注意:报告目录文件必须是空目录,测试报告文件中不能有数据,空文件或者不存在文件。


版权声明:本文为weixin_64652936原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。