这篇主要做一些练手的压测,学习一下配置文件和变量的使用。
先看一下这次压测的内容,主要是从缓存中取用户,不多说,上代码。
Controller层:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
MiaoshaUserService userService;
@Autowired
RedisService redisService;
@RequestMapping("/info")
@ResponseBody
public Result<MiaoshaUser> info(Model model, HttpServletResponse response,
@CookieValue(value = MiaoshaUserService.COOKI_NAME_TOKEN,required = false) String cookieToken,
@RequestParam(value = MiaoshaUserService.COOKI_NAME_TOKEN,required = false) String paramToken) {
if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) {
return Result.success(null);
}
String token = StringUtils.isEmpty(paramToken)?cookieToken:paramToken;
MiaoshaUser user = userService.getByToken(response,token);//从token中读用户信息
return Result.success(user);
}
}
相关Service层:
@Service
public class MiaoshaUserService {
public static final String COOKI_NAME_TOKEN = "token";
@Autowired
MiaoshaUserDao miaoshaUserDao;
@Autowired
RedisService redisService;
public MiaoshaUser getByToken(HttpServletResponse response, String token) {
if (StringUtils.isEmpty(token)) {
return null;
}
MiaoshaUser user = redisService.get(MiaoshaUserKey.token, token, MiaoshaUser.class);
//延长有效期
if (user != null) {
addCookie(response, token, user);
}
return user;
}
private void addCookie(HttpServletResponse response, String token, MiaoshaUser user) {
redisService.set(MiaoshaUserKey.token, token, user);//把token信息写到缓存中,在redis中管理session
Cookie cookie = new Cookie(COOKI_NAME_TOKEN, token);//在cookie中放入名为“token” 值为token的字段
cookie.setMaxAge(MiaoshaUserKey.token.expireSeconds());//这里把cookie和token的Redis设为一致的有效期
cookie.setPath("/");
response.addCookie(cookie);
}
}
RedisService和Result的相关代码不重要,就不放了。可以看到这段代码只是对redis的操作,没有涉及到数据库。
以下主要完成模拟不同用户访问网站,知识点涉及到在JMeter中设置变量。
1、在JMeter中新建一个http request,并如图中显示完成4步;
2、建立一个文本文件,里面放了用户id和对应的token,如:
就先放了一条,应该有很多条,节约时间。。
3、建立CSV Data Set Config
CSV Data Set Config配置完成啦。
4、继续配置HTTP Request
5、然后就可以运行啦,线程数和循环次数自己设置。
这里throughput还是很高的,因为只是redis操作。
后面继续写如何生成测试用例。