分布式压测

需求场景

一些关键接口需要压测到很高的QPS需要设置更多的线程去模拟虚拟用户去请求接口假如需要模拟2万个用户因为jemeter使用java语言开发每创建一个线程jvm默认会为每个线程分配1M的堆栈内存空间那么就需要20G内存一般压测机器是4核8G或8核16G因此需要更多台机器共同完成施压请求

分布式压测示意图


meter分布式测试环境中有两个角色:Master和Slaves

1、Master节点:向参与的Slaves节点发送测试脚本,并聚合Agent节点的执行结果,部署一台

2、Slaves节点:接收并执行Master节点发送过来的测试脚本,并将执行结果返回给Master,可部署多台

安装slave节点

docker pull runcare/jmeter-slave

docker run -it -d --name slave01 runcare/jmeter-slavedocker run -it -d --name slave02 runcare/jmeter-slavedocker run -it -d --name slave03 runcare/jmeter-slave

准备测试脚本

test.jmx


查看slave机器的IP

docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q)

启动master docker并执行测试脚本

存放test.jmx脚本的目录

/Users/mengfanxiao/Documents/stream/jemeter/jmx/

命令

result=`date +"%Y%m%d%H%M%S"` && docker run --rm -v /Users/mengfanxiao/Documents/stream/jemeter/jmx/:/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/$result.jtl -j /data/$result.log -e -o /data/$result -R 172.17.0.6,172.17.0.7,172.17.0.8

或者

docker run --rm -v $(pwd):/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/result.jtl -j /data/result.log  -R 172.17.0.6,172.17.0.7,172.17.0.8

结果文件

生产的结果文件,日志文件和报表文件在脚本文件test.jmx同一目录下

如果压测脚本中使用到了csv数据源文件,需要提前复制到Slaves的/data目录下

注意事项

  • master和slaves需要在同一个网段
如果mac电脑Master使用安装在mac电脑中的JmeterSlaves使用Docker中的Slaves需要在启动Slaves时将端口映射出来

docker run -it -d -p 1099:1099 -p 60001:60001 runcare/jmeter-slave
  • 执行Master发送脚本时也需要指定server.hostname和server.rmi.localport
进入test.jmx所在目录

result=`date +"%Y%m%d%H%M%S"` && jmeter -n -t test.jmx -l $result.jtl -j $result.log -e -o $result -Djava.rmi.server.hostname=30.208.47.45 -Dserver.rmi.localport=60002 -Dserver_port=1098

Dockerfile源码

https://gitee.com/pingfanrenbiji/resource/tree/master/%E5%88%86%E5%B8%83%E5%BC%8Fjemeter

Jeecgboot微服务Feign

示例

服务jeecg-cloud-system 调用 jeecg-cloud-demo

jeecg-cloud-demo 服务接口

  • 接口

  • 实现类

  • 服务接口

jeecg-cloud-system编写feign客户端

方式一 feign客户端

  • 启动类加上@EnableFeignClients

  • 编写feign客户端

  • 编写测试方法

方式二 动态feign客户端

  • 启动类 @EnableFeignClients

同上

  • 编写feign接口调用

同上

  • 编写测试方法


参数一表示feign接口类参数二表示类名称

feign原理

  • 架构图

  • feign扫包和注册细节

  • FeignClientFactoryBean 解析

  • 代理的实现过程

  • 代理invoke的实际执行过程

xxl-job定时任务集成

引入依赖


客户端demo编写


修改 jeecg-dev.yaml 配置文件

  • 开启 xxljob 并 修改 xxljob-admin的服务连接配置

  • 启动xxl-job服务

数据库脚本

https://gitee.com/pingfanrenbiji/jeecg-boot/blob/1e3a4d6a6f53589a3cd53fd18c62bf4375467447/jeecg-boot/jeecg-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql

配置邮箱通知


开启邮箱服务并生成授权码



设置IMAP服务的SSL加密方式

https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=331

启动服务


界面访问

http://localhost:9080/xxl-job-adminadmin123456

  • 创建定时任务

新增执行器


新增定时任务


测试定时任务


查看执行日志



Jeecgboot Feign、分布式压测、分布式任务调度相关推荐

  1. java模拟数据库压测_Jeecgboot Feign、分布式压测、分布式任务调度

    分布式压测 需求场景 一些关键接口需要压测到很高的QPS 需要设置更多的线程去模拟虚拟用户去请求接口 假如需要模拟2万个用户 因为jemeter使用java语言开发 每创建一个线程 jvm默认会为每个 ...

  2. 接口测试学习——jmeter分布式压测

    分布式压测我理解的就是有一台主控机和几台压力机.主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证.操作步骤如下: 1.启动jmeter自动化工具,界面显示如下图所示. 2.在 ...

  3. jmeter分布式压测原理简介1

    1.什么叫分布式压测? 分布式压测:模拟多台机器向目标机器产生压力,模拟几万用户并发访问 2.分布式压测原理:如下 3.更多补充.....待添加 转载于:https://www.cnblogs.com ...

  4. 分布式压测系列之Jmeter4.0第一季

    1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...

  5. 分布式压测系列之Jmeter4.0

    1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...

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

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

  7. JMETER性能测试从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)

    1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...

  8. 搭建 Apache Jmeter 分布式压测与监控

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

  9. jmeter 高并发测试报告_Windows下JMeter分布式压测环境搭建

    JMeter是Apache组织开发的开源项目,设计之初用于性能测试,同时它在实现对各种接口的调用方面做得比较成熟,因此,常被用于接口功能测试和性能测试.它能够很好的支持各种常见接口,如HTTP(S). ...

最新文章

  1. 学会和同事相处的30个原则
  2. java channelexec_java-使用SSH exec通道调用Shell脚本,但忽略对其他Shell脚本的调用
  3. html中剪切图片所用插件,简单功能强大的jQuery图片剪裁插件Image Cropper
  4. C# 使用 Windows API 操作控件: SendMessage
  5. vivado 仿真_提高Vivado效率一种自研工具介绍
  6. 2.9 while循环
  7. 曝张一鸣在游戏群批员工上班时聊游戏,遭回怼:那你退群啊
  8. 黄聪:解决wordpress定时发布文章失败”丢失计划任务”的插件
  9. Python项目部署到Docker的完整过程
  10. 计算机桌面的图标怎么删除,桌面图标删不掉怎么办 如何彻底删除桌面图标
  11. C函数篇(recv函数)
  12. 全栈工程师将会缔造下一个高薪群体
  13. 以太网进化历程半景-从10Mbps到1Tbps
  14. HotDB——布式事务数据库中不同数据库表对象的类型设计准测
  15. c语言任何一个大于6的偶数均可表示为两个素数之和,C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和...
  16. 全国计算机考试如何查准考证号
  17. 011-Java代理模式
  18. STM32G070芯片开发笔记:一、如何用ST送的学习板上的STLink烧录调试
  19. 倾一世烟花,爱已成痴
  20. 做seo为什么要了解网站

热门文章

  1. JavaScript(三)——对象与数组基础及API
  2. Ajax(一)——Ajax基础概念,HTTP头部(重点)
  3. Java形参的改变不会影响实参
  4. http://java.sun.com/jsp/jstl/core cannot be resolved(含有jstl1.2jar包网盘)
  5. JAVA RPC (六) 之thrift反序列化RPC消息体
  6. 理解Python的With语句
  7. Ubuntu Touch 预览版安装过程解析
  8. MaxDos启动盘拆解
  9. css的工作原理及使用规则
  10. HTTP之Cookie