一、硬件资源监控
1.1、serverAgent
serverAgent是在使用jmeter做性能测试时,把他放到windows或者Linux服务中(看服务器部署在哪个系统),运行监控服务的资源,如CPU,内存,网络,磁盘等的变化。
server默认的端口是4444,如果是阿里服务器得修改默认端口,启动服务即开始监听服务器资源。
1.1、serverAgent配置
(1)通过ftp工具上传到服务器(根目录)
(2)通过xshell连接服务器并解压(注意是什么方式压缩的文件,我以zip压缩文件为例)
解压命令:unzip 文件名
启动服务:sh startagent.sh --udp-port 0 --tcp-port 6663 修改端口(如果是阿里服务器得执行修改端口操作,tcp端口自己设置,大于1024即可,udp为0是关闭udp,不启用)
注意:一定要记住自己设置的端口号,这是我随便设置的6663
- 配置服务器防火墙(两种方法:1、关闭防火墙,2、开放端口),建议开放端口,防火墙对于使用中的服务器还是很重要的
1.2、serverAgent用法
在jmetert添加监听器监控服务器资源
首先要下载好这两个jar包,放到jmeter的lib/ext目录下
(1)在线程组中添加下图中框起来的一栏
(2)填写我们要监控的服务器和端口,端口是上面设置的2342,选择要监控的指标项,如CPU,内存等。
注意:在监控硬件资源时,可进行多项同时监控,但是单位不一样不要放一起,避免看不懂数据
(如下图是我们监控的CPU占比情况,因为我们请求用户比较少,才10个,所以数据比较小)
二、分布式压测
2.1、压测概念
使用一定的负载对系统长时间运行,看系统是否正常运行
2.2、分布式测试概念
机器在造线程组(虚拟用户数)时要消耗一定的资源,当我们需要的用户数比较多时,一台机器明显不够用,得用多个机器来分担压力,比如我们总共要做5000人的压测,用5台机器来分担,那么一台造1000个用户,最后数据都通过agent汇集到主控机器。
2.3、压测环境部署
1、助攻机器环境配置要求
分担压力的机器的jmeter和jdk版本一致
同一个局域网
安装插件要一致
测试数据都是csv文件
2、怎么解决以上这些问题?
将主控机器的jmeter整体压缩成压缩文件,通过FTP上传到对应分担压力的系统中,如果文件中出现乱码,很可能就是文件名称命名为中文导致,所以记得英文命名项目文件,不要出现中文目录。
3、助攻机器环境配置步骤
在助攻机器解压文件
在助攻机器修改jmeter配置文件里面的内容
切记不要再助攻机器上再配置jemter环境,否则会出错
在助攻机器的jmeter\bin目录使用如下命令启动助攻机器jmeter服务
(Windows服务器):jmeter-server.bat -Djava.rmi.server.hostname=助攻机器IP
linux服务器:jmeter-server -Djava.rmi.server.hostname=助攻机器IP
4、助攻jmeter配置文件要修改得内容项
server_port:随意设置,大于1024即可(设置好让开发开放端口)
server.rmi.port:认证端口,http和https,随意设置,改成server_port相同的端口即可
server.rmi.ssl.disable=true :启动ssl认证,用于https验证
5、主控机器配置文件要求
remote_host =助攻机器ip:端口(多台助攻机器时,用英文逗号隔开)
server.rmi.ssl.disable=true
mode=Standadrd —如果不启动这个,主控机器不会去收集助攻机器的数据
在主控机器重启jmeter
6、jmeter界面设置
打开jmeter界面,点击“运行”–通过选择哪台助攻机器,或者运行所有的机器,包括助攻机器和助攻奇机器,结虚拟用户数将显示不同机器的用户请求情况
2.4、分布式压测总结
有时候为了尽量模拟真实的业务场景,需要模拟大量的并发请求,但是这个时候单台压力机就显得有心无力。由于jmeter本身的机制和硬件限制,很可能出现请求无响应,卡顿的现象,
针对这个情况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景,就是上文中我们说的主控机器和助攻机器,助攻机器也常叫负载机,都差不多。
原理:
通过主控机器控制,以代理agent的形式,让其他负载机运行想服务器同时发起请求,且负载机不用运行图形界面,最后主控机通过监听器收集各个负载机的数据,进而根据各种监控数据进行性能指标分析。