压测笔记一、使用Jemeter对.NET6 WebApi的HelloWorld程序做并发压力测试
2023-10-10 15:18 古兆洋 阅读(206) 评论(0) 编辑 收藏 举报转自:https://www.cnblogs.com/fuhua/p/16696237.html
使用Jemeter对.NET6 WebApi 并发压力测试
前言
现在我需要对一个.NET6 WebApi HelloWord程序进行并发性能测试
WebApi运行在局域网IP为192.168.1.163的机器上
Jmeter运行在局域网IP为192.168.1.90的机器上
说明:并发压测不可以将Jmeter和Webapi项目放在同一台机器上,因为两者同时都会消耗CPU和内存,会导致测试结果不准确。
机器配置:I5-10500 16G内存
新建控制器AttackController并写入下面代码
using Microsoft.AspNetCore.Mvc; namespace Attack.Controllers { /// <summary> /// 压力测试 /// </summary> [ApiController] [Route("[controller]")] public class AttackController : ControllerBase { /// <summary> /// 用于演示压力测试的接口 /// </summary> /// <returns></returns> [HttpGet(Name = "TestAttack")] public string TestAttack() { return "HelloWorld"; } } }
F5运行并保证接口能正常请求
接下来配置局域网访问
到Debug目录下运行接口exe文件,使用局域网IP在swagger上测试并保证接口能正常请求
使用浏览器开发者工具对刚才的请求进行抓包
配置Jmeter(重点)
下载Jmeter
开源地址:https://github.com/apache/jmeter
下载地址:https://jmeter.apache.org/download_jmeter.cgi
Jmeter设置永久中文显示
修改Jmeter bin目录下的jmeter.properties文件,设置language=zh_CN
运行jmeterw.cmd添加一个线程组
添加Http请求取样器
填写箭头所指的参数
添加->监听器->查看结果树,查看结果树可以看到每次请求的报文
之后点击启动按钮就可以在结果树里看到每次请求的响应信息了
注意:上述的操作仅仅只是测试下我们的配置是否正确,以及接口是否能正常响应,接下来才是正确配置并发压测
首先点击清除全部按钮将之前的压测结果清除
添加->监听器->聚合报告,用于检测当前并发下的吞吐量等信息
添加->监听器->用表格查看结果,用于用表格的方式反馈结果
添加->定时器->Synchronizing Timer(同步定时器)
这个是重点,当不添加同步定时器时,每启动一个线程则会立即发起请求,最终会导致比如1000个线程实际总计请求了10秒钟,
这就不叫并发了。并发的意义在于同一时间内同时执行的请求。
而这个同步定时器就是用于给已经启动的线程上锁,直到所有线程都启动完成才会同时发起请求。
1000并发结果
3000并发结果
5000并发结果
总结:我们可以在聚合报告中看到,5000个线程并发平均响应时间是537毫秒,吞吐量为2510.0/sec表示每秒可以处理2510.0个请求性能还是非常强悍的。
另外:其实上述的测试并不完全准确。
1.真实的压测需要使用控制台程序而不是这样可视化的GUI程序,因为GUI程序的界面渲染是很耗费时间的会影响压测结果
2.192.168.1.90这台机器上运行Jmeter开启5000个并发,CPU根本不足以开启这么多并发线程,会导致CPU使用率100%的情况,也会影响测试结果
3.正确的做法是Jmeter使用控制台做集群,每个Jmeter客户端都要根据当前硬件条件合理地设置线程数量
4.之前是对Debug版本程序做的压力测试,实际项目中应该对Release版本进行压测,Release版本对.NET程序做了很多编译优化操作,比如函数内联等等会提高很多性能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了