电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談Spring Boot: 接口壓測及簡要優化策略

瀏覽:26日期:2023-08-12 08:41:25

工程做好之后,需要對接口進行壓力測試。可以自己編寫線程池模擬多用戶訪問測試,也可以使用jmeter進行壓測。jmeter的好處是測試方便,并且有完善的結果分析功能。本次采用jmeter進行壓力測試。

1.準備數據,為了測試準備200w條以上的數據。一個簡單的方法是使用下面的sql快速創建。

INSERT INTO table (user_name,address)

SELECT user_name, address FROM table;

但這樣創建的數據不同記錄的重復部分太多,和實際業務不太相符。一般業務上,除了主鍵之外還會有某一個字段是唯一,比如手機號,用戶名等。本次將user_name設置為唯一,簡單采用UUID的方式生成。

@RequestMapping('/create')public Integer createData(Integer password) {if (password != 1024) {return 0;}ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10,20, 1, TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(100000),Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy());int max = 1000000;for (int i = 0; i < max; i++) {poolExecutor.execute(() -> {Date now = new Date();User user = new User();user.setStatus(0);user.setUserName(UUID.randomUUID().toString().replace('-', ''));user.setAddress('');user.setCreateTime(now);user.setUpdateTime(now);userService.saveUser(user);});}return 1;}

采用線程池技術來生成數據。部分參數參考自己的配置進行設置。我這里采用核心線程數10,最大線程數20,阻塞隊列容量10w,拒絕策略CallerRunsPolicy的參數來生成。

數據生成以后,確認下生成數量,可以看到所有的user_name都是不同的。

select count(*),count(distinct user_name) from user

淺談Spring Boot: 接口壓測及簡要優化策略

2.改造接口。為了測試方便,使用公共mapper。引入依賴

<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId></dependency>

修改啟動類MapperScan注解為import tk.mybatis.spring.annotation.MapperScan;

mapper接口繼承extends Mapper,(import tk.mybatis.mapper.common.Mapper;)。這樣就會為mapper生成insert,select等基本方法。

3.測試。

所測試的接口為

@RequestMapping(value = '/hello', method = {RequestMethod.POST})public List<User> getUser(User user) {return userService.getUserByUser(user);}

打開jmeter,通過Option選擇中文語言。創建測試計劃,這次僅對接口進行壓力測試。

測試參數選擇userName,并使用隨機生成的UUID,這樣可以保證最終訪問DB時不觸發任何緩存。

1.文件-新建測試計劃

2.編輯-添加-線程-線程組

3.選中線程組,編輯-添加-邏輯控制器-事務控制器

4.選中事務控制器,編輯-添加-取樣器-BeanShell 取樣器

5.選中事務控制器,編輯-添加-HTTP請求

6.選中BeanShell取樣器,將下面代碼復制到腳本框里面,內容即為設置user_name變量為UUID。

import java.util.UUID;UUID uuid1 = UUID.randomUUID();vars.put('user_name',(uuid1.toString()).toUpperCase().replaceAll('-',''));

淺談Spring Boot: 接口壓測及簡要優化策略

7.選中HTTP請求,設置如下,其中參數部分內容為:

名稱 值 userName ${user_Name}

這樣就可以將步驟6生成的參數傳遞為HTTP POST請求的參數了。

淺談Spring Boot: 接口壓測及簡要優化策略

添加結果樹,匯總報告等,最終結構:

淺談Spring Boot: 接口壓測及簡要優化策略

8.選中線程組,設置線程數等信息,詳細請參照官網:https://jmeter.apache.org/usermanual/index.html

淺談Spring Boot: 接口壓測及簡要優化策略

這里先設置線程數為2000,由于要壓力測試,設置Ramp-up為1秒,即1秒內啟動所有線程。

9.啟動線程組。在這里插入圖片描述

10.結果樹里面可以確認具體每次請求的參數:

淺談Spring Boot: 接口壓測及簡要優化策略

匯總報告里面可以查看總體信息:

淺談Spring Boot: 接口壓測及簡要優化策略

通過以上步驟,可以初步預估下系統各個接口的吞吐量等信息。第一次壓測中user_name自動沒有設置索引,可以通過一些方法來提高系統性能:

1.為user_name設置索引。

2.使用redis緩存,其一是緩存最近檢索數據,其二是將表中所有user_name存入緩存(Set),請求到來時首先去緩存中查看是否存在,只有存在的時候才去檢索DB。

3.若數據量過大,可采用布隆過濾器存儲user_name。

4.限流,這里只說API層面的,guava包下RateLimiterJ;自寫切面+Redis;Spring Cloud GateWay。

工程地址:https://github.com/showsys20/spring-demo-cm.git

以上這篇淺談Spring Boot: 接口壓測及簡要優化策略就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 煤粉取样器-射油器-便携式等速飞灰取样器-连灵动 | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 臭氧实验装置_实验室臭氧发生器-北京同林臭氧装置网 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 北京京云律师事务所 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 |