1

使用JMeter测试.Net5.0,.Net6.0框架下无数据处理的并发情况 - 吴先森

 2 years ago
source link: https://www.cnblogs.com/wuyongfu/p/16614652.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1.   安装JMeter及使用

1.1下载JMeter

登录官方网站找到下载链接进行下载:https://jmeter.apache.org/download_jmeter.cgi

 

756970-20220822231501242-957431732.png
1.2配置环境变量

配置JMeter环境变量

新建变量名 JMETER_HOME

值为:JMeter解压目录\bin(下载的文件解压目录)

安装Java8+

参考文章:https://blog.csdn.net/weixin_45078706/article/details/115830318

2.新建.Net程序

选择Asp.Net Core Web API

 

756970-20220822231510324-1586698868.png

输入项目名称

 

756970-20220822231520057-2086262389.png

选择框架.Net5.0

 

756970-20220822231527547-2063358269.png

在Controllers添加包含读/写的API控制器

756970-20220822231611559-1974902811.png

这次分别测试上面4个接口在不同框架下的响应情况

生成解决方案,找到生成目录下的JmeterTest.exe直接运行

 

756970-20220822231629730-1306566756.png

访问http://localhost:5000/swagger/index.html

因为框架默认引用了swagger组件,所以可以直接访问,但页面出现404

 

756970-20220822231641683-479082339.png

修改Startup.cs代码,注释如下行

 

756970-20220822231649900-1577132474.png

在此生成运行出现swagger页面

 

756970-20220822231658393-1684593676.png

3.Jmeter接口测试

打开下载Jmeter解压出来bin目录下的jmeter.bat

出现下面窗口(方便使用切换到中文版本,步骤:Options->Choose Language->Chinese(Simplified))

 

756970-20220822231708822-1858314599.png
3.1新建一个线程组,线程就是模拟用户请求,可设置线程数来控制请求的数量

 

756970-20220822231724770-882699526.png

参数说明:

  1. 线程数:模拟请求的用户数量
  2. Ramp-Up时间(秒):达到启用指定线程数的时间
  3. 循环次数:线程执行循环的次数,一般在初次测试接口时设置为1,正式压测时设置的永远
  4. Same user on each iteration:待补充..
  5. 延迟创建线程知道需要:待补充..
  6. 调度器:持续时间(秒):程序持续运行时间,启动延时(秒):启动的线程延时多久执行下一组
3.2添加Http请求默认值

 

756970-20220822231729792-954314924.png
3.3添加HTTP信息头管理器

添加Content-Type:application/json

3.4添加Http请求

 

756970-20220822231735418-1421307551.png

按照需要测试的几种请求接口,这里需要添加四个Http请求

3.5添加响应断言,对请求的接口进行断言,判断是否请求成功

 

756970-20220822231741642-1279033820.png
3.6添加查看结果树,查看详细的接口请求及返回内容

 

756970-20220822231747585-334963415.png
3.7添加聚合报告查看整体接口请求聚合情况

 

756970-20220822231753975-1286351464.png
3.8进行初步测试确保接口响应没有问题

 

756970-20220822231808114-1453250920.png
3.9修改线程数,启用调度器,再次启动压测请求

 

756970-20220822231800783-557579265.png

第一次请求出现了大量的:already in use: connect

 

756970-20220822231817899-327852772.png

搜索找到解决方案修改注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在Parmeters右键新建DWORD值,命名为MaxUserPort,然后选择十进制并输入数据65534后保存

然后测试发现还是一样的错误,检查参数设置发现Same user on each iteration没有勾选,查询了下资料大概意思是如果选中表示每次请求是同一个用户,不勾选循环的每次是不同的用户

3.10net5.0请求300s结果如下,大概每秒59886.9次请求

 

756970-20220822231826921-259222974.png
3.11切换至.net6.0

再次进行测试

 

756970-20220822231832401-1237224718.png

请求300s结果如下,大概每秒62232.7次请求,提升了2346,基于net5.0提升了3.9%

 

756970-20220822231839397-401521116.png
3.12切换至.net7.0

 

756970-20220822231857108-925509153.png

再次进行测试

 

756970-20220822231902924-1864196064.png

请求300s结果如下,大概没秒63108次请求,基于net6.0提升876次,提升1.4%,基于net5.0提升3222次,提升5.3%

单纯从接口响应情况来看,net5.0及以上已经有了很大的提升,net6.0,net7.0也都有相应的提升,也为后续的业务处理高并发打下了基础


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK