java模拟数据库压测_Jeecgboot Feign、分布式压测、分布式任务调度
分布式压测
需求场景
一些关键接口需要压测到很高的QPS
需要设置更多的线程去模拟虚拟用户去请求接口
假如需要模拟2万个用户
因为jemeter使用java语言开发
每创建一个线程
jvm默认会为每个线程分配1M的堆栈内存空间
那么就需要20G内存
一般压测机器是4核8G或8核16G
因此需要更多台机器共同完成施压请求
分布式压测示意图
meter分布式测试环境中有两个角色:Master和Slaves1、Master节点:向参与的Slaves节点发送测试脚本,并聚合Agent节点的执行结果,部署一台2、Slaves节点:接收并执行Master节点发送过来的测试脚本,并将执行结果返回给Master,可部署多台
安装slave节点
docker pull runcare/jmeter-slavedocker run -it -d --name slave01 runcare/jmeter-slave
docker run -it -d --name slave02 runcare/jmeter-slave
docker 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电脑中的Jmeter
Slaves使用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-admin
admin
123456
- 创建定时任务
新增执行器
新增定时任务
测试定时任务
查看执行日志
java模拟数据库压测_Jeecgboot Feign、分布式压测、分布式任务调度相关推荐
- java模拟数据库压测_java应用的优化【转】
XX银行网银系统是一套全新的对公业务渠道类系统,经过两年的建设,将逐步对外提供服务. 该系统融合了原来多个对公渠道系统,并发量是以前多个系统之和,吞吐量要求将大幅上升.为了使广大对公客户使用系统时获得 ...
- java模拟数据库压测_Jmeter压测工具使用总结
1.常用测试工具对比 1.loadrunner 性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多 2.apache ab(单接口压测最方便) 模拟多线程并发请求,ab ...
- java模拟数据库压测_java模拟数据库缓存
实现缓存一些数据到本地,避免重复查询数据库,对数据库造成压力,代码如下: package threadLock; import java.util.HashMap; import java.util. ...
- java模拟数据库压测_写并发压测 java 脚本你必须会的 3 个类
性能测试做到后面,一些特殊的场景利用常用的现成工具满足不了需求,所以你需要学习java写一些特定协议的压测脚本,那你不得不研究多线程或线程池,而此时你也一定会遇到java并发编程中的几个类,今天重点讲 ...
- Jeecgboot Feign、分布式压测、分布式任务调度
分布式压测 需求场景 一些关键接口需要压测到很高的QPS需要设置更多的线程去模拟虚拟用户去请求接口假如需要模拟2万个用户因为jemeter使用java语言开发每创建一个线程jvm默认会为每个线程分配1 ...
- 分布式压测系列之Jmeter4.0第一季
1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...
- 分布式压测系列之Jmeter4.0
1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...
- 性能测试搭建Jmeter分布式压测与监控
对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容性能提升大 ...
- 搭建 Apache Jmeter 分布式压测与监控
1.前言 对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容 ...
最新文章
- 大角度人脸转正--Towards Large-Pose Face Frontalization in the Wild
- Hello World社团冬季招新暨杭电Umis项目人才招募程序设计竞赛
- Boss直聘Python爬虫实战
- 【Shiro第九篇】SpringBoot + Shiro整合JWT
- bgr to rgb
- GeoServer发布shp数据
- 中小型企业无线网络设计
- 手机字体 html代码大全,移动端html5如何定义字体
- mongodb for mac安装
- WordPress实现点击标签云中的某一标签,就展示出此标签下的所有文章
- HTML强制关机,如何强制关机【处置技巧】
- Designing Network Design Spaces
- 快递查询单号查询,分享简单好用查询技巧
- 机器人中的DIY,成就满满!
- 必备技能06:UML类图要素及解析
- systemd的日志存在哪里?
- 保姆式RecyclerView下拉刷新、上拉加载更多Kotlin
- 鼠标滑轮控制Div水平滚动
- mysql5.5手册读书日记(4)
- MODBUS通信系列之数据处理
热门文章
- Linux运维之道之ENGINEER1.3(配置SMB共享,配置NFS共享)
- LVM逻辑卷管理基本概念及原理
- 2012年回忆录及2013年目标设立
- InstallShield 2008 终止声明 (EOL)对最终客户意味着什么
- 创业,“玩”的就是心态
- Greenplum segment级问题的排查 - gp_session_role=utility (含csvlog日志格式解读)
- Docker CE for CentOS的安装(对官方文档的翻译)
- Vue.js 2 入门与提高(一)
- Visual Studio 2013 Xamarin for iOS 环境搭建
- PHP中两种包含文件方式、三种注释风格、四种标记风格