评判系统的性能好坏,通过性能指标,性能指标是客户性能需求分析后获取,或者客户对性能指标直接给出具体指标项。
常见的性能指标:响应时间(通过时间来反馈系统的反应速度);
用户数(在线数、并发数,通过系统可以承载的用户数量来判断性能);
吞吐量、吞吐率、点击量、点击率 都是来评判软件系统的处理能力;
资源的利用率(通过软件对系统资源的消耗来评判性能)
Jmeter 对服务器资源的监控
利用 jdk 自带的监控工具
对服务器资源进行查看:JDK的目录下 bin 下面 jconsole.exe
Jmeter-serverAgent 监控
实现步骤:
- 下载需要使用的插件管理器 jmeter-plugins-manager-1.6.jar 的jar 包和 ServerAgent-2.2.3.zip 包
- ServerAgent-2.2.3.zip 进行解压缩,放在被监控服务器上,启动监控
注意:启动的时候出现闪退,是因为解压包的时候,解压好的程序外面多了一层同名的目录。
- 插件管理器 jmeter-plugins-manager-1.6.jar 的jar包必须放在 jmeter的安装目录下的 lib 目录下的 ext 目录中,重启 Jmeter,在options 选项下,会多出一个菜单“plugins manage”,选择需要的插件进行安装,安装步骤:
- 我们需要的插件是:Permon(servers Performance ……)
- 插件安装成功后,会自动重启jmeter,在监听器中可以看到多了一个监听类型 “jp@gc - PerfMon Metrics Collector ” ,用来查看资源监控的。
- 打开已创建好的测试计划或者新建测试计划,添加监听器:jp@gc - PerfMon Metrics Collector
- 配置需要监听的设备的IP 和监听项(监控的资源类型项),默认端口后 4444,确保端口没有被占用
- 如果监控的是远程设备,需要把远程服务器上的两个服务打开(以 windows 为例):
- 并且把 “ServerAgent-2.2.3.zip”包解压缩,放在 “被监控的服务器上”,并且启动监控(双击 startAgent.bat),就可以收集远程服务器的资源了。
利用 nmon 监控专门监控Linux服务器
分布式测试
背景:使用jmeter进行性能测试的时候,对于高频的大量的数据并发(比如10000或者更多并发),单台电脑的配置(CPU或者内存)可能无法支持,需要进行分布式测试(客户端压力分摊),也叫做客户端负载均衡。
分布式原理
- jmeter分布式测试的时候,选择其中一台机器作为主控机器(controller/master),其它机器作为执行机(分摊机器)。
- 执行时,主控机器会把脚本发送到每台执行机器上,执行机器拿到脚本,开始执行(负责跑脚本),执行机器在运行时,不要启动GUI界面(实质上用的就是命令模式执行脚本)。
- 执行完以后,执行机器会把结果回传给主控机器,主控机器就收集所有的执行机器的数据信息进行汇总。
主控机器:生成脚本,调试脚本,汇总数据
执行机器:运行脚本,回传数据给主控机器
主控机器也可以和执行机器一并执行脚本。
实现步骤
- 执行机器的设置
- 在执行机器上安装 jdk ,jmeter ;(主控机器和执行机器上的版本要完全一致)
- 必须配置环境变量:JMETER_HOME;
- 启动 bin 目录下:jmeter_server.bat;(否则,主控机器无法连接到执行机器,无法实现远程启动)
问题:提示无法启动,请按任意键/文件找不到….
解决:
1、找到执行机器上的 C:\apache-jmeter-5.2.1\bin 目录中的配置文件 jmeter.properties
问题1:远程执行成功,取样器结果是绿色,但是查看结果树中,响应结果为空白。
第一步:打开主控机的jmeter--bin目录下的jmeter.properties文件
第二步:查找到mode=Standard 项
- 修改 #server.rmi.ssl.disable=false ,去掉 # ,将 false 改为 true,重启 jmeter-server.bat
- 重启以后,查看命令窗口,启动成功
2、主控机器的设置
1、准备测试脚本
2、修改配置文件:jmeter.properties ,修改 ip 和端口号,在文件中查询
Remote Hosts,原来默认值是 remote_hosts=127.0.0.1,表示就是本机,需要修改 Hosts信息;
3、hosts 格式:执行机 ip : 端口号,执行机2号 ip:端口号….默认端口号 1099,端口号还可以自定义,执行的时候,确保端口号没有被占用。
- 重启 jmeter-server.bat;
- 重启主控机器的 jmeter.bat, 运行—》远程启动,即可以实现分布式测试。
第三步:将其前边的注释去掉,然后保存重启jmeter,再次运行远程机器,就可以看到数据了
问题2:远程启动执行设备以后,卡死,结果树没有反应,没有时间显示,日志显示
使用ipconfig查看服务器IP,发展239.1为VMware Virtual Ethernet Adapter for VMnet1(虚拟机的IP),并非是网站的物理机器的IP,所以结论就是发请求的时候,找的服务器的IP错了,一直发请求,一直连不上,解决办法:禁用虚拟机网络:
- 分布式测试小结
- 主控机器和执行机器的JDK,Jmeter版本必须一致,一模一样
- 如果会用到csv参数文件,需要将参数文件在每台执行机器上都拷贝一份过去,并且文件存放的路径和主控机器上脚本中设置的路径保持一致。比如都放在D:\
- 如果要每台执行机器上的参数值不一样,仍然是 要同名同路径的参数文件拷贝过去,只是文件中具体的参数值不一样即可。
- 自定义端口
- 在执行机器中设置,找到 bin目录下参数配置文件 jmeter.properties,修改两个参数
配置项:
默认值分别为 1099 和 4000
#server_port=1099
#server.rmi.localport=4000(也可以不修改)
自定义修改:1000 或者别的未被占用的端口,并且去掉注释符 # ,保存,主要是修改
Server_port 的值。
- 重启 jmeter-server.bat
- 修改主控机器上的配置信息:remote_hosts=执行机器IP:自定义的端口
- 重启jmeter.bat,运行—》远程启动,可以看到端口号发生变化了
- 命令启动分布式测试
参数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 报告
注意:报告目录文件必须是空目录,测试报告文件中不能有数据,空文件或者不存在文件。