JMETER

在做后端服务器性能测试中,我们会经常听到’分布式’。哪你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意?

01.为什么要使用分布式

做性能测试时,如果被测系统性能比较好,或者系统项目比较大,那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时,发起请求的机器,硬件资源是一定的,不可能配置无限大。

所以,它能发起的并发用户数是有限的,而当我们发起方一台电脑能发起的并发用户数小于我们性能测试期望的并发用户数时,我们就会自然而然想到增加发起方的电脑。增加发起方电脑数量,那么,发起的并发用户数累加,就增大了。

发起方一台电脑,不管是 windows 系统还是 Linux 系统,一般而言,大概能支持 1.5k 左右并发用户,更多并发用户就要采用分布式。

那么,接下来的问题就是如何配置分布式?

02.如何配置分布式

助攻机配置,修改 jmeter.properties 文件

  • 首先,我们准备多台机器,作为助攻机器;

  • 然后,检查每台机器上是否安装了 JDK,并且 JDK 版本是否都一致;

  • 然后,在助攻机器上放置相同版本的 jmeter;

  • 接下来,配置 jmeter.properties 文件,

  • 修改 server_port 端口,自定义一个端口

  • 修改 server.rmi.ssl.disable=true

  • 修改 server.rmi.port 端口 ---- 可选

  • 启动服务:jmeter-server -Djava.rmi.server.hostname=ip_address

  • 检查防火墙,关闭或开放 自定义的 server_port 端口

主控机器配置,修改 jmeter.properties 文件

  • 修改 remote_hosts,值为助攻机器 ip
  • 修改,server.rmi.ssl.disable=true
  • 修改, mode=Standard

03.分布式机配置有哪些注意事项

分布式的配置,是不是很简单呢?

是的,这个配置实际上一点都不难,如果你要自己练手,按照上面的操作,就能很简单配置成功。但是,当你在企业项目中实战时,还会这么简单吗?如果你企业的项目,需要支持大几万的并发,要使用几十台助攻机器,是不是就简单重复上面的操作就可以了呢?

答案是否定的。

现在有几十台 Linux 机器,放在你面前,供你去配置为助攻机。数量比较大,完全无法保证每一台都一模一样,所以,我们先要检查机器配置。

1、硬件资源

CPU、内存是一台电脑的核心, 几十台机器,我们完全无法保证每一台都一样,在助攻机的要求中,虽然,没有对 CPU 和内存做要求,但是,如果每台机器能提供的资源不一样,那么能产生的并发用户数量肯定也会不相等。

所以,我们需要找出有机器中,最低配置的机器,然后,以最低配置机器为参考配置 jmeter 的堆栈信息。

  • 通过 top 命令,查看下每个系统的 CPU 和内存信息
  • 修改 jmeter 的 bin 文件夹中 jmeter 文件 HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" 修改堆栈信息中的大小。
  • 不配置,在执行高并发用户数时,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.disable=true, 端口可以不相同

如果代码中使用了第三方插件,助攻机器上,也必须有这些插件包

  • 环境变量

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.hostname=ipaddr 因为每台的 ip 地址都不一样,所以,这个命令必须一个一个的敲。同时,我们可以加个’&‘ 符号,把命令转换为后台运行。

  • 在主控机器上执行:java -Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g -jar $JMETER_HOME/bin/ApacheJMeter.jar -n -R xxx:port,xxx:port -t xxx.jmx -l xxxx.jtl -e -o xxdirect

  • -Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g 这个是设置主控机器 jmeter 的堆栈信息,这个大小,可以根据自己机器的内存大小灵活修改,但是,这个一定要设置的比较大。如果小了,生成报告的时间就会很长。

  • $JMETER_HOME/bin/ApacheJMeter.jar 为自己的 jmeter 路径

  • -R xxx:port,xxx:port 指定助攻机器。可以根据自己的需要指定。如果,不需要采用分布式,就不用这一段,如果要用分布式,就要使用这一段,多台时,就用逗号分隔。

  • -t xxx.jmx 你放在主控机器上的 jmeter 脚本文件

好了,这些注意事项,你都学会了吗?

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

帮你排雷Jmeter分布式性能测试那些坑~轻轻松松去实战相关推荐

  1. 帮你排雷Jmeter分布式性能测试那些坑

    JMETER 在做后端服务器性能测试中,我们会经常听到'分布式'.哪你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意? 为什 ...

  2. 性能测试 性能测试实战(八)Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

    文章目录 一.前言 二.Jmeter分布式性能测试平台 介绍 1.Jmter分布式性能测试平台 简介 2.Jmeter分布式性能测试平台 优秀案例1 3.Jmeter分布式性能测试平台 优秀案例2 4 ...

  3. jmeter分布式性能测试

    分布式性能测试的原因: 一台计算机能运行的线程数是有限的,可以处理的Jmeter线程就只有100-300个.比如某个接口测试的场景是支持1200的并发, JMeter就可能在运行800个线程左右的时候 ...

  4. JMeter 分布式性能测试

    作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错 ...

  5. 性能测试平台搭建及简单使用(jmeter分布式+influxdb2.0+grafana)附性能测试报告

    目录 一.jmeter分布式配置 1.分布式介绍 2.配置JDK 3.slave机器配置(linux系统为例,windows资源杂乱不建议使用) 4.master机器配置(windows系统为例,作为 ...

  6. 性能测试搭建Jmeter分布式压测与监控

    对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容性能提升大 ...

  7. 【软件测试培训】了解jmeter分布式测试

    一提到分布式测试,大家肯定会觉得,哇!好高大上,一定很高深的吧,这里老师推出不做傻白甜系列文章,带同学们一步一步理解jmeter的分布式测试. 首先我们来看下jmeter自动化测试的流程 ,见如下图1 ...

  8. Jmeter 分布式压测

    一.jmeter分布式压测使用场景 1.当一台jmeter并发数达到瓶颈时,需要多台jmeter一台控制机,多台负载机来进行分布式压测 扩大并发数 2.当测试多台服务器时,需要同时通过多个ip压测同一 ...

  9. Jmeter --- 分布式测试

    在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分 ...

最新文章

  1. Web项目使用nginx实现代理端口访问,看这篇就够了
  2. java图形用户界面添加背景颜色不成功的解决方案
  3. SQL Server通过动态视图里查找阻塞超过30秒的会话
  4. jsp判断disable按钮不可选_选电子琴五部曲
  5. linux生成免密码登录
  6. 【数字信号处理】 第二章、时域中的离散时间信号
  7. Java执行程序服务类型
  8. mysql完全手册阅读笔记
  9. 9 Node 中的 TensorFlow.js
  10. 如何上传文件及文件夹到IPFS
  11. 月薪7500的软件测试,是个什么工作状态
  12. HDU 3420 Bus Fair [补]
  13. java类 权限修饰词_java-学习笔记-访问权限修饰词一
  14. 五大步骤快速搭建个人网站
  15. mysql版本升级对数据的影响_MySQL升级
  16. 如何学习嵌入式Linux_韦东山
  17. 堆糖:爱豆图片分享社区
  18. XnViewMP 压缩图片
  19. 使用模板导入excel 得到数据
  20. Python实现自动完成打字测试

热门文章

  1. java 等待时间_java工作复习——4大时间等待——显示等待
  2. HALCON 20.11:深度学习笔记(12)---语义分割
  3. Python+OpenCV:图像快速角点检测算法(FAST Algorithm for Corner Detection)
  4. QT实现appendSheet
  5. 方舟手游服务器设置文件翻译,方舟手游咋设置翻译
  6. 计算机专业职称入深户,最近深圳很火的职称入户,到底要选什么职称?
  7. php实现微信红包金额随机分配的函数
  8. Codeforces Round #302 (Div. 2)
  9. SVN安装,SVN服务搭建与eclipse里插件安装
  10. Jquery 屏蔽右键菜单,识别右键事件