JMeter 压测Http接口
今天产品在会议上吐槽说我们的服务接口连一点点压力都扛不住用户稍微用下翻译功能就报错 429。我一听 429 就觉得不对劲明明4xx 的错误码应该找前端才对的怎么能找我这个前端后端运维测试工程师呢如果是产品经理有意见其实我们是可以单独解决的麻烦就麻烦在当时老板在会上。不用多久我就会降职减薪辞去码农不写代码喜提大礼包走向人生低谷。血液中尚存的打工人因子立即觉醒了起来我明白我不能坐以待毙。所以我只能祭出程序员的秘密武器 -- 压测。 俗话说压测至尊负载屠龙号令服务莫敢不从压力不出谁与争锋所以我们今天得来看看压测是怎么个事压测需要什么首当其冲的问题是用什么来压测那必定是JMeter有同学说Apache bench和Apipost这些也行啊。我只能说啊对对对你说的对那你用吧。然后是压测什么压测产品经理bushi应该是压测产品经理说的那个 HTTP 接口。虽然我挺赞成解决不了问题就解决提出问题的人。但先别急我们得先让老板看看我们的工作能力。到时候压测报告一甩再狗叫一些高并发高可用。总之狗叫权归我之时。就是我升级加薪当上总经理出任CEO迎娶白富美走上人生巅峰的时候了。最后最重要的是什么当然是压测配置啊压测时候你怼个1c1g的机器。压出来报告一甩你还没狗叫完老板就立即杀狗了。这个程序员不行啊搞个接口 qps 才到 200这怎么支撑我的宏图大业我将来可是要和苹果掰掰手腕的指不定到时候还要收购他呢这程序员水平不够啊我们的同事都是国际一线的水平才能和苹果干呀还好产品及时发现了。你最好主动离职公司不追究你的责任。所以压测最重要的是什么不用我说了吧安装JMeter安装JMeter前需要先安装JDK JDK 安装完成的标准就是运行这条命令能打印出Java版本号出来PS C:\Users\Administrator java --version openjdk 21.0.4 2024-07-16 LTS OpenJDK Runtime Environment Temurin-21.0.47 (build 21.0.47-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.47 (build 21.0.47-LTS, mixed mode,sharing)到这个下载页面 Apache JMeter - Download Apache JMeter 选个包下下来一般window就选择zip其他系统选择tgz当然你要倒反天罡也随你zip包dlcdn.apache.org//jmeter/bin…tgz包dlcdn.apache.org//jmeter/bin…下载完之后解压执行 jmeter.bat 它会打开命令行和一个图形应用提供一个HTTP接口用于压测这是个demo如果你想直接对线上进行压测。我是十分鼓励的不止能得到真实的数据还能测试服务宕机后还能不能高可用。import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.atomic.AtomicInteger; RestController public class IndexController { private final AtomicInteger counter new AtomicInteger(0); private long lastResetTime System.currentTimeMillis(); private static final int LIMIT 10; private static final long ONE_SECOND 1000; RequestMapping(value /test, method RequestMethod.GET) public String test() { // 计数器看不懂就算了。冤有头债有主你应该找GPT long currentTime System.currentTimeMillis(); if (currentTime - lastResetTime ONE_SECOND) { counter.set(0); lastResetTime currentTime; } int currentCount counter.incrementAndGet(); String response currentCount LIMIT ? 我是接口我要打LIMIT个 : 你这个小伙子不讲武德给我蹭了一下; System.out.println(currentCount response); return response; } }curl 测试一下子出现我是接口我要打10个就是接口O了$ curl localhost:8080/test 我是接口我要打10个接下来我们来压一下配置 JMeter 压测 HTTP 接口1、先创建测试计划2、创建线程组 线程组简单理解就是【线程】【组合】起来说白了就是多个线程。因为 JMeter 是 Java 实现的Java 要实现并发就是用的线程。3、配置线程组参数这个配置的意思很明显了1s内30个人一起搞一个接口搞3轮。如果把Infinite勾上就是一直搞直到接口顶不住。这个叫接口的人真的太惨了4、添加HTTP接口配置添加一个HTTP 请求写上接口参数如果需要添加请求头右键然后选这里再选这里最后选那里就可以了5、查看结果View Results Tree 是看每一次请求信息的 Summary Report 是看总体请求信息的一般压测也是看这个 两个监听器都添加上6、开始压测我们要讲武德上10个试试看看起来打10个少了。我们不讲武德了直接上100个100个只是蹭了一下接口还是生龙活虎的我们彻底不讲武德了上10000个10000 太猛了给接口干爆了。看吞吐量差不多可以处理880个武林要以和为贵。7、导出压测报告先配置上中间结果存储的位置配置好了之后再次运行结果会被写入到文件中不用打开看了里面是一堆看不懂的记录接着往下把这些记录可视化 最后把这份报告甩到群里。然后狗叫一声我的接口支持高可用高并发下接口表现优异具体可查看压测报告。有了你这个报告连老板都舍不得给你发大礼包了。最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。