弹簧引导:接口压测及简要优化策略

  介绍

本篇文章为大家展示了弹簧引导:接口压测及简要优化策略,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1。准备数据,为了测试准备200 w条以上的数据。一个简单的方法是使用下面的sql快速创建。

插入表(user_name、地址)

选择user_name,从表地址;

但这样创建的数据不同记录的重复部分太多,和实际业务不太相符。一般业务上,除了主键之外还会有某一个字段是唯一,比如手机号,用户名等。本次将user_name设置为唯一,简单采用UUID的方式生成。

@RequestMapping (“/create")   公共整数createData(整数密码){   如果(密码!=1024){   返回0;   }   ThreadPoolExecutor poolExecutor=new ThreadPoolExecutor (10,   20日1 TimeUnit.MINUTES   新的ArrayBlockingQueue (100000),   新ThreadPoolExecutor.CallerRunsPolicy Executors.defaultThreadFactory (), ());   int max=1000000;   for (int i=0;我& lt;马克思;我+ +){   poolExecutor.execute (()→{   日期现在=新的日期();   用户用户=新用户();   user.setStatus (0);   .toString user.setUserName (UUID.randomUUID () () .replace(“产生绯闻,““));   user.setAddress (“;”);   user.setCreateTime(现在);   user.setUpdateTime(现在);   userService.saveUser(用户);   });   }   返回1;   }

采用线程池技术来生成数据。部分参数参考自己的配置进行设置。我这里采用核心线程数10,最大线程数20日阻塞队列容量10 w,拒绝策略CallerRunsPolicy的参数来生成。

数据生成以后,确认下生成数量,可以看到所有的user_name都是不同的。

select count(*),计数(不同的user_name)从用户

弹簧引导:接口压测及简要优化策略

2。改造接口。为了测试方便,使用公共mapper。引入依赖

& lt; dependency>   & lt; groupId> tk.mybatis   & lt; artifactId> mapper-spring-boot-starter   & lt;/dependency>

修改启动类MapperScan注解为进口tk.mybatis.spring.annotation.MapperScan;

映射器接口继承扩展映射器,(进口tk.mybatis.mapper.common.Mapper;)。这样就会为mapper生成插入、选择等基本方法。

3。测试。

所测试的接口为

 @RequestMapping (value=https://www.yisu.com/zixun/"/hello”,方法={RequestMethod.POST})
  公共列表<用户> getUser(用户用户){
  返回userService.getUserByUser(用户);
  }

打开jmeter,通过选项选择中文语言。创建测试计划,这次仅对接口进行压力测试。

测试参数选择用户名,并使用随机生成的UUID,这样可以保证最终访问DB时不触发任何缓存。

1。文件——新建测试计划

2。编辑——添加-线程——线程组

3。选中线程组,编辑——添加-逻辑控制器——事务控制器

4。选中事务控制器,编辑——添加——取样器-BeanShell取样器

5。选中事务控制器,编辑——添加http请求

6。选中BeanShell取样器,将下面代码复制到脚本框里面,内容即为设置user_name变量为UUID。

进口java.util.UUID;
  UUID uuid1=UUID.randomUUID ();
  vars.put (“user_name", (uuid1.toString ()) .toUpperCase () .replaceAll(“产生绯闻,““));

弹簧引导:接口压测及简要优化策略

7。选中HTTP请求,设置如下,其中参数部分内容为:

名称值的用户名$ {user_Name}

这样就可以将步骤生6成的参数传递为HTTP POST请求的参数了。

弹簧引导:接口压测及简要优化策略

添加结果树,汇总报告等,最终结构:

弹簧引导:接口压测及简要优化策略

8。选中线程组,设置线程数等信息,详细请参照官网:https://jmeter.apache.org/usermanual/index.html

弹簧引导:接口压测及简要优化策略

这里先设置线程数为2000,由于要压力测试,设置过渡为1秒,即1秒内启动所有线程。

9。启动线程组。在这里插入图片描述

10。结果树里面可以确认具体每次请求的参数:

弹簧引导:接口压测及简要优化策略