当前位置: 首页 > news >正文

Jmeter 分布式压测

为什么要分布式

  • jmeter是100%纯java开发的程序,虚拟用户是以线程实现的,在大量并发情况下,很容易出现CPU、内存消耗过大的问题,甚至会出现java内存溢出。
  • 一般一台电脑设置500-600线程数即可,如果超过1000线程,单机电脑就有点过高了,同时也还要关注本机电脑CPU、内存不能超过80%~90%的范围,否则会导致测试机本身的性能瓶颈,测试结果也会不准确。

分布式测试原理

  • 总控机器的节点Jmeter controller,其他产生压力的机器叫“肉鸡”(Jmeter server)
  • controller会把脚本发送到Jmeter server上,肉鸡不需要准备jmx文件
  • 执行的时候,server上只需要把jmeter-server打开就可以了,不用启动jmeter
  • 执行结束后,server会把压测数据回传给controller,然后controller汇总输出报告
  • 注意:必须保证主机和肉鸡安装相同的jdk和jmeter

在这里插入图片描述

环境部署

  1. 准备机器:
    在这里插入图片描述
  2. 安装示例:
# 所有机器都需要安装
apt-get update --fix-missing # 更新源
apt-get install openjdk-8-jdk # 安装jdk
cd /opt
tar -xvf apache-jmeter-5.6.2.tgz  # 假设已经下载了对应版本到该目录
vim /etc/profile  # 将jmeter追加到系统环境变量export JMETER_HOME=/opt/apache-jmeter-5.6.2export PATH=$JMETER_HOME/bin:$PATH
source /etc/profile # 生效
  1. 检查java环境
    在这里插入图片描述
  2. 检查jmeter环境
    在这里插入图片描述
  3. 更改配置文件
  • master机
    进入/opt/apache-jmeter-5.6.2/bin 目录,按以下配置修改jmeter.properties配置文件
    注:remote_hosts 为执行机的ip及端口,多个执行机可通过英文逗号 “,” 进行拼接
    在这里插入图片描述server.rmi.ssl.disable=true(关闭SSL传输)

  • slave机
    进入/opt/apache-jmeter-5.6.2/bin 目录,修改jmeter.properties配置文件, 只需将server.rmi.ssl.disable=true即可

  1. 运行
  • slave机
    进入/opt/apache-jmeter-5.6.2/bin运行jmeter-server
    在这里插入图片描述
  • master机
    jmeter -n -t ./sfs.jmx -l ./result.jtl -j ./result.log -r
    在这里插入图片描述

注意事项

  • 进行性能测试前,尽量对Jmeter进行减负,避免运行时间过长,导致Jmeter卡死:
    (1)并发线程不要设置太高,建议单机300以下
    (2)“察看结果树”勾选“仅日志错误”,尽可能减少jvm内存使用
    (3)在压测时,要禁用诸如View Result Tree这类的监听器,这类监听器非常耗内存
    (4)用jmeter测试时使用BeanShell脚本获取随机参数值,会导致请求时间过长,TPS过低。应改为使用csv读取参数值,记录的TPS会更加准确
  • Master与各Slave使用的Java、jmeter版本保持一致;
  • 若测试计划中引用了某插件,则Master与各Slave都要包含该插件
  • 测试计划只需要放在Master上,执行时会自动分发到各Slave,不需要每台Slave复制一份
http://www.lryc.cn/news/240256.html

相关文章:

  • Docker 安装 Apache
  • python变量、常量、数据类型
  • 注册中心CAP架构剖析
  • SVN创建分支
  • Vue 设置v-html中元素样式
  • 连接服务器的脚本
  • ChatGPT/GPT4丨编程助手;AI画图;数据分析;科研/项目实现;提示词工程技巧;论文写作等
  • 35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?
  • 2020年09月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • SpringBoot面试之SpringBoot自动装配原理
  • JavaScript:监听事件
  • 编写SQL语句,场景:从一张表中查询某字段是逗号分隔的集合值,需要遍历集合内每个值,将其作为条件去查询另一张表,最终返回列表
  • 单链表相关面试题--7.链表的回文结构
  • JUC(Java Util Concurrent)多线程并发库
  • 如何在Linux系统上检测GPU显存和使用情况?
  • Django 入门学习总结5
  • FileNotFoundError: [Errno 2] No such file or directory: ‘patchelf‘: ‘patchelf‘
  • 『new Date 在 IOS 失效 の bug』
  • macos创建xcframework及签名
  • Oracle与Redis Enterprise协同,作为企业缓存解决方案
  • 局部保持投影(Locality preserving projections,LPP)
  • Flutter:引领移动开发新潮流,跨平台应用程序的终极解决方案
  • 开源免费的流程设计器如何选型
  • 设置pdb自动启动
  • 抖店入驻成功后,新手需要怎么做?7天起店流程教会你!
  • RTS 客户端-服务器网络
  • python连接数据库的方式
  • 【腾讯云云上实验室-向量数据库】探索腾讯云向量数据库:全方位管理与高效利用多维向量数据的引领者
  • 二、sql手工注入
  • day61 layui和分页原理