亿级流量点赞系统第七章
项目地址
GitHub地址💥:https://github.com/tenyon61/likeboom
后端初始化模板💥:https://github.com/tenyon61/springboot3-demo/tree/single
快速开始
✨安装JMeter
地址:https://jmeter.apache.org/download_jmeter.cgi

✨压测配置
修改bin\jmeter.properties的language改为zh_CN
点击jmeter.bat启动JMeter
- 添加线程组
- 添加信息头管理器
- 添加HTTP请求
- 添加响应断言
最后基本配置如下

首先测试能否调通

✨压测流程
批量插入5w人数据

💥并行流获取SESSION
▼java复制代码@Test void testLoginAndExportSessionToCsv() throws Exception { List<User> list = userService.list(); try (PrintWriter writer = new PrintWriter(new FileWriter("session_output.csv", true))) { writer.println("userId,sessionId,timestamp"); // 使用并行流处理用户登录 list.parallelStream().forEach(user -> { try { long testUserId = user.getId(); MvcResult result = mockMvc.perform(get("/api/auth/login") .param("userId", String.valueOf(testUserId)) .contentType(MediaType.APPLICATION_JSON)) .andReturn(); List<String> setCookieHeaders = result.getResponse().getHeaders("Set-Cookie"); assertThat(setCookieHeaders).isNotEmpty(); String sessionId = setCookieHeaders.stream() .filter(cookie -> cookie.startsWith("SESSION")) .map(cookie -> cookie.split(";")[0]) .findFirst() .orElseThrow(() -> new RuntimeException("No SESSION found in response")); String sessionValue = sessionId.split("=")[1]; // 使用同步块保证线程安全 synchronized (writer) { writer.printf("%d,%s,%s%n", testUserId, sessionValue, LocalDateTime.now()); } System.out.println("✅ 写入 CSV:" + testUserId + " -> " + sessionValue); } catch (Exception e) { e.printStackTrace(); } }); } }
拿到csv

💥读取CSV

💥配置sessionId

💥压测结果
以Redis + 同步任务为例
1.单压测Redis写

2.Redis+同步任务

本章总结
对于使用Apache JMeter对点赞系统压测,通过摸拟真实用户请求的方式,来实现高并发测试。
项目踩坑
- 不同压测需要切换提交记录
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
