网站建设怎么选公司,网络运营师资格证,唐山网站建设方案策划,做的网站图片不显示在做后端服务器性能测试中#xff0c;我们会经常听到’分布式’。但你是否了解分布式呢#xff1f;今天#xff0c;我们就来给大家讲讲#xff0c;在企业实战中#xff0c;如何使用分布式进行性能测试#xff0c;实战过程中#xff0c;又有哪些地方要特别注意#xff1…在做后端服务器性能测试中我们会经常听到’分布式’。但你是否了解分布式呢今天我们就来给大家讲讲在企业实战中如何使用分布式进行性能测试实战过程中又有哪些地方要特别注意
01. 为什么要使用分布式
做性能测试时如果被测系统性能比较好或者系统项目比较大那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时发起请求的机器硬件资源是一定的不可能配置无限大。
所以它能发起的并发用户数是有限的而当我们发起方一台电脑能发起的并发用户数小于我们性能测试期望的并发用户数时我们就会自然而然想到增加发起方的电脑。增加发起方电脑数量那么发起的并发用户数累加就增大了。
发起方一台电脑不管是 windows 系统还是 Linux 系统一般而言大概能支持 1.5k 左右并发用户更多并发用户就要采用分布式。 那么接下来的问题就是如何配置分布式
02. 如何配置分布式
助攻机配置修改 jmeter.properties 文件
首先我们准备多台机器作为助攻机器
然后检查每台机器上是否安装了 JDK并且 JDK 版本是否都一致
然后在助攻机器上放置相同版本的 jmeter
接下来配置 jmeter.properties 文件
修改 server_port 端口自定义一个端口
修改 server.rmi.ssl.disabletrue
修改 server.rmi.port 端口 ---- 可选
启动服务jmeter-server -Djava.rmi.server.hostnameip_address
检查防火墙关闭或开放 自定义的 server_port 端口
主控机器配置修改 jmeter.properties 文件
修改 remote_hosts值为助攻机器 ip
修改server.rmi.ssl.disabletrue
修改 modeStandard
03. 分布式机配置有哪些注意事项
分布式的配置是不是很简单呢
是的这个配置实际上一点都不难如果你要自己练手按照上面的操作就能很简单配置成功。但是当你在企业项目中实战时还会这么简单吗如果你企业的项目需要支持大几万的并发要使用几十台助攻机器是不是就简单重复上面的操作就可以了呢
答案是否定的。
现在有几十台 Linux 机器放在你面前供你去配置为助攻机。数量比较大完全无法保证每一台都一模一样所以我们先要检查机器配置。 1、硬件资源
CPU、内存是一台电脑的核心 几十台机器我们完全无法保证每一台都一样在助攻机的要求中虽然没有对 CPU 和内存做要求但是如果每台机器能提供的资源不一样那么能产生的并发用户数量肯定也会不相等。
所以我们需要找出有机器中最低配置的机器然后以最低配置机器为参考配置 jmeter 的堆栈信息。
通过 top 命令查看下每个系统的 CPU 和内存信息修改 jmeter 的 bin 文件夹中 jmeter 文件 HEAP:“-Xms1g -Xmx1g -XX:MaxMetaspaceSize256m” 修改堆栈信息中的大小。不配置在执行高并发用户数时jmeter 可能会出现 OOM 问题
2、系统环境
JDK
机器多了每台机器的 JDK 大版本是否一致可能就是个问题。如果机器上没有安装哪可以直接去安装指定版本即可但是如果助攻机器上已经安装了其他版本的 JDK并且正运行其他 Java 项目这个时候怎么办呢
指定 jmeter 的运行 JDK 版本
下载解压指定 JDK 版本到 Linux 的 /usr/local 文件夹下 不要去配置改动系统环境变量在 jmeter 的 jmeter 文件中添加 JAVA_HOME/usr/local/jdk版本/ 指定 jmeter 运行的 JDK 版本这样就不用改动操作系统的 JDK不影响系统中其他 Java 项目
jmeter
jmeter 版本
所有助攻机器上 jmeter 的版本都必须一致。
jmeter.properties 要修改 ssl.disabletrue 端口可以不相同
如果代码中使用了第三方插件助攻机器上也必须有这些插件包
环境变量
jmeter 运行本身可以不配置 JMETER_HOME 环境变量但是当机器多了时还是建议在所有机器上配置 JMETER_HOME 环境变量
HEAP 配置
机器多了可能每台机器的内存都不一样 我们期望助攻机器能产生更大的并发用户数所以建议修改每台机器的 HEAP 配置信息设置为相同
CSV 文件
如果写的 jmeter 脚本中使用了 CSV 数据文件设置那么文件的路径请使用相对路径写法。
jmeter-server 助攻服务在哪个路径下启动就要在所有的机器上上传 CSV 文件到该路径下的相对位置。
os 操作系统
os 版本没有要求可以是不同版本
端口区间
操作系统的端口数量是有限的不同系统默认情况下打开的端口数量可能不相等这就需要我们去配置一下每台机器上打开的端口范围。
sysctl -a | grep net.ipv4.ip_local_port_range
这个命令可以查看当前机器上开启的端口范围
sysctl -w net.ipv4.ip_local_port_range“1024 65534” 然后再执行 sysctl -p 生效。这样设置每台机器上开启的端口范围
sysctl -a | grep net.ipv4.ip_local_port_range
这个命令可以查看当前机器上开启的端口范围
打开文件数量
操作系统对每个程序能打开的文件数量是有限制的这个是系统限制我们可以通过 ulimit -n 看到 也可以通过 cat /proc/进程id/limit 查看某个进程今天能打开的文件数量限制。
因为性能测试助攻机也是要发起大量请求的这有可能要打开大量的文件如果文件数量限制过小也会导致问题所以我们可以通过 ulimit -n 数量 来修改进程可以打开的文件数量。然后重启动 jmeter-server 助攻服务这样就会以你修改后的数量来做限制了。
时间
助攻机器多了可能出现每台机器的时间不一样我们可以通过 date 查看每台机器的时间。
性能测试期望是在同一时间能发起大量请求如果多台机器时间不一致那么在同一时间发起的请求数量可能就达不到预期要求所以我们需要同步设定每台机器的时间。date -s 时间 来设定系统时间。
网络环境
几十台机器网络配置可能会不一样如果这些助攻机器到被测服务器之间的网络存在问题那么可能就会导致请求压力上不会甚至出现网络错误。
我们可以在每台助攻机器上使用 tracepath 被测服务器 来查看助攻机到被测服务器之间的网络情况。如果发现网络延迟时间很长哪就说明当前机器可能网络配置有问题。在使用时可能就要剔除这台助攻机器。
启动服务
在每台助攻机器上执行jmeter-server -Djava.rmi.server.hostnameipaddr 因为每台的 ip 地址都不一样所以这个命令必须一个一个的敲。同时我们可以加个’‘ 符号把命令转换为后台运行。
在主控机器上执行java -Xms48g -Xmx48g -XX:MaxMetaspaceSize2g -jar $JMETER_HOME/bin/ApacheJMeter.jar -n -R xxx:port,xxx:port -t xxx.jmx -l xxxx.jtl -e -o xxdirect
-Xms48g -Xmx48g -XX:MaxMetaspaceSize2g 这个是设置主控机器 jmeter 的堆栈信息这个大小可以根据自己机器的内存大小灵活修改但是这个一定要设置的比较大。如果小了生成报告的时间就会很长。
$JMETER_HOME/bin/ApacheJMeter.jar 为自己的 jmeter 路径
-R xxx:port,xxx:port 指定助攻机器。可以根据自己的需要指定。如果不需要采用分布式就不用这一段如果要用分布式就要使用这一段多台时就用逗号分隔。
-t xxx.jmx 你放在主控机器上的 jmeter 脚本文件
好了这些注意事项你都学会了吗 总结
感谢每一个认真阅读我文章的人
作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。 软件测试面试文档
我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 视频文档获取方式 这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。