国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

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

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

1.準(zhǔn)備數(shù)據(jù),為了測(cè)試準(zhǔn)備200w條以上的數(shù)據(jù)。一個(gè)簡(jiǎn)單的方法是使用下面的sql快速創(chuàng)建。

INSERT INTO table (user_name,address)

SELECT user_name, address FROM table;

但這樣創(chuàng)建的數(shù)據(jù)不同記錄的重復(fù)部分太多,和實(shí)際業(yè)務(wù)不太相符。一般業(yè)務(wù)上,除了主鍵之外還會(huì)有某一個(gè)字段是唯一,比如手機(jī)號(hào),用戶名等。本次將user_name設(shè)置為唯一,簡(jiǎn)單采用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;}

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

數(shù)據(jù)生成以后,確認(rèn)下生成數(shù)量,可以看到所有的user_name都是不同的。

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

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

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

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

修改啟動(dòng)類MapperScan注解為import tk.mybatis.spring.annotation.MapperScan;

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

3.測(cè)試。

所測(cè)試的接口為

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

打開jmeter,通過Option選擇中文語言。創(chuàng)建測(cè)試計(jì)劃,這次僅對(duì)接口進(jìn)行壓力測(cè)試。

測(cè)試參數(shù)選擇userName,并使用隨機(jī)生成的UUID,這樣可以保證最終訪問DB時(shí)不觸發(fā)任何緩存。

1.文件-新建測(cè)試計(jì)劃

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

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

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

5.選中事務(wù)控制器,編輯-添加-HTTP請(qǐng)求

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

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

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

7.選中HTTP請(qǐng)求,設(shè)置如下,其中參數(shù)部分內(nèi)容為:

名稱 值 userName ${user_Name}

這樣就可以將步驟6生成的參數(shù)傳遞為HTTP POST請(qǐng)求的參數(shù)了。

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

添加結(jié)果樹,匯總報(bào)告等,最終結(jié)構(gòu):

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

8.選中線程組,設(shè)置線程數(shù)等信息,詳細(xì)請(qǐng)參照官網(wǎng):https://jmeter.apache.org/usermanual/index.html

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

這里先設(shè)置線程數(shù)為2000,由于要壓力測(cè)試,設(shè)置Ramp-up為1秒,即1秒內(nèi)啟動(dòng)所有線程。

9.啟動(dòng)線程組。在這里插入圖片描述

10.結(jié)果樹里面可以確認(rèn)具體每次請(qǐng)求的參數(shù):

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

匯總報(bào)告里面可以查看總體信息:

淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略

通過以上步驟,可以初步預(yù)估下系統(tǒng)各個(gè)接口的吞吐量等信息。第一次壓測(cè)中user_name自動(dòng)沒有設(shè)置索引,可以通過一些方法來提高系統(tǒng)性能:

1.為user_name設(shè)置索引。

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

3.若數(shù)據(jù)量過大,可采用布隆過濾器存儲(chǔ)user_name。

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

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

以上這篇淺談Spring Boot: 接口壓測(cè)及簡(jiǎn)要優(yōu)化策略就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 黄a 大片a v 永久免费 | 特级毛片全部免费播放器 | 免费看成人www的网站软件 | 国产成人精品免费视频大全办公室 | 国产欧美亚洲三区久在线观看 | 无码免费一区二区三区免费播放 | 亚洲精品美女国产一区 | 亚洲bbbbbxxxxx精品三十七 | 亚洲视频在线观看免费视频 | 草草久 | 亚洲人成人毛片无遮挡 | 99久久伊人一区二区yy5099 | 日韩一区二区三区四区 | 韩国免又爽又刺激激情视频 | 久久综合久美利坚合众国 | 久久综合久久综合九色 | 97视频免费观看2区 97视频免费上传播放 | 国产成人久久精品二区三区 | 久久高清一级毛片 | 一级欧美视频 | 日本在线免费视频 | 国产成人亚洲精品老王 | 欧美一级毛片久久精品 | 国产美女白丝袜精品_a不卡 | 日韩久久一区二区三区 | 日韩精品一级毛片 | 中文字幕va一区二区三区 | 中文字幕一区二区小泽玛利亚 | 亚洲精品456在线播放无广告 | 乱淫毛片| 国产va精品网站精品网站精品 | 成人黄色一级片 | 日本一道免费一区二区三区 | 亚洲高清中文字幕一区二区三区 | 91麻精品国产91久久久久 | 久久久久国产精品免费网站 | 日本理论片午夜论片 | 亚洲人成综合在线播放 | 国产一级一级毛片 | 三级亚洲 | 国产一二三区视频 |