当前版本:
- jmeter 5.6.3
文章目录如下
1. 分布式压测的作用
JMeter分布式压测的主要作用是通过将压力分散到多个机器上来模拟大量用户同时访问系统的情景。
对于低并发使用一台压力机即可,当并发量达到一定程度时(比如100w)单台压测机显然不能满足测试要求,所以提出了分布式压测。将一台压力机作为控制机,再准备几台机器用作压力机,将并发的压力分摊到每台机器上就能够模拟大规模用户同时访问系统的情况。
2. 分布式压测的步骤
需要准备1台控制机和几台压力机,具体根据实际情况来定。
2.1. 下载jmeter
官网地址
将下载 jmeter 分别放在控制机和压力机上(注意:版本要一致)。
详细的安装方法见另一篇文章:
https://blog.csdn.net/m0_61066945/article/details/127712770
2.2. 配置相关文件
① 内存配置
举个例子,在 Linux 中运行使用 jmeter 或 jmeter.sh,那么配置这两个文件;在 Windows 中运行使用 jmeter.bat,那么就配置这个 jmeter.bat 文件。在文件中找到这一行:
HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
- -Xms1g:指定初始堆内存大小为 1GB。
- -Xmx1g:指定最大堆内存大小为 1GB。
- -XX:MaxMetaspaceSize=256m:指定 Metaspace 区域的最大空间为 256MB。它用于存储类的元数据信息的,并不直接受 -Xms 和 -Xmx 这两个参数的影响。Metaspace 的大小由 JVM 自动管理,根据需要动态调整,不受 Java 堆的限制。但它在实际运行过程中仍然需要占用一部分内存空间。如果设置过小的 Metaspace 大小,可能导致元数据无法存储,从而导致类加载失败。如果设置过大的 Metaspace,可能占用了过多的本地内存,导致系统资源不足。
比如系统总内存128GB,测试 1000 并发,那么可以配置初始2g,最大8g,Metaspace 1g。
- 在 1000 并发的情况下,可以设置较高的初始堆内存,以保证开始时的性能。
- 根据业务复杂度,如果业务比较消耗内存,则可以增大-Xmx 。
注意:压力机和控制机都需要配置内存,根据实际情况配置就行
② 控制机配置
控制机就是控制其他压力机的主机,配置 jmeter/bin/jmeter.properties 文件
1、找到 remote_hosts
remote_hosts=[压力机1:它的端口],[压力机2:它的端口]
配置运行测试的机器,如果需要让自身(控制机)也运行测试,那么加入本机IP、端口即可。
2、找到 server_port
server_port = [端口号] # 未被占用的端口
3、找到 server.rmi.ssl.disable
server.rmi.ssl.disable=true
③ 压力机配置
压力机就是分担压力的机器,也是配置 jmeter/bin/jmeter.properties 文件
1、找到 remote_hosts
remote_hosts=127.0.0.1 # 使用本地机器执行
2、找到 server_port
server_port = [端口号] # 需要未被占用的端口
3、找到 server.rmi.ssl.disable
server.rmi.ssl.disable=true
④ 远程调度配置
控制机和所有的压力机都需要配置 jmeter/bin/jmeter-server
RMI_HOST_DEF=-Djava.rmi.server.hostname=[当前环境IP]
所有环境启动远程控制服务
./jmeter-server
2.3. 运行测试
- jmeter 支持命令行和GUI远程运行.
① 命令行运行
jmeter -n -t 测试文件 -r -l 输出结果 -e -o 生成报告路径
- -n:命令行模式运行JMeter
- -t:指定要执行的jmx文件
- -r:远程运行JMeter客户端和服务器模式
- -l:指定测试结果的日志文件(类似于查看结果树)
- -e:在测试结束后生成HTML报告
- -o:指定用于生成HTML报告的目标目录
② GUI工具运行
- 启动:启动当前机器测试
- 远程启动:指定启动某个压力机
- 远程启动所有:启动配置的全部压力机