使用JMeter测试.Net5.0,.Net6.0框架下无数据处理的并发情况
1. 安装JMeter及使用
1.1下载JMeter
登录官方网站找到下载链接进行下载:https://jmeter.apache.org/download_jmeter.cgi
1.2配置环境变量
配置JMeter环境变量
新建变量名 JMETER_HOME
值为:JMeter解压目录\bin(下载的文件解压目录)
安装Java8+
参考文章:https://blog.csdn.net/weixin_45078706/article/details/115830318
2.新建.Net程序
选择Asp.Net Core Web API
输入项目名称
选择框架.Net5.0
在Controllers添加包含读/写的API控制器
这次分别测试上面4个接口在不同框架下的响应情况
生成解决方案,找到生成目录下的JmeterTest.exe直接运行
访问http://localhost:5000/swagger/index.html
因为框架默认引用了swagger组件,所以可以直接访问,但页面出现404
修改Startup.cs代码,注释如下行
在此生成运行出现swagger页面
3.Jmeter接口测试
打开下载Jmeter解压出来bin目录下的jmeter.bat
出现下面窗口(方便使用切换到中文版本,步骤:Options->Choose Language->Chinese(Simplified))
3.1新建一个线程组,线程就是模拟用户请求,可设置线程数来控制请求的数量
参数说明:
- 线程数:模拟请求的用户数量
- Ramp-Up时间(秒):达到启用指定线程数的时间
- 循环次数:线程执行循环的次数,一般在初次测试接口时设置为1,正式压测时设置的永远
- Same user on each iteration:待补充..
- 延迟创建线程知道需要:待补充..
- 调度器:持续时间(秒):程序持续运行时间,启动延时(秒):启动的线程延时多久执行下一组
3.2添加Http请求默认值
3.3添加HTTP信息头管理器
添加Content-Type:application/json
3.4添加Http请求
按照需要测试的几种请求接口,这里需要添加四个Http请求
3.5添加响应断言,对请求的接口进行断言,判断是否请求成功
3.6添加查看结果树,查看详细的接口请求及返回内容
3.7添加聚合报告查看整体接口请求聚合情况
3.8进行初步测试确保接口响应没有问题
3.9修改线程数,启用调度器,再次启动压测请求
第一次请求出现了大量的:already in use: connect
搜索找到解决方案修改注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在Parmeters右键新建DWORD值,命名为MaxUserPort,然后选择十进制并输入数据65534后保存
然后测试发现还是一样的错误,检查参数设置发现Same user on each iteration没有勾选,查询了下资料大概意思是如果选中表示每次请求是同一个用户,不勾选循环的每次是不同的用户
3.10net5.0请求300s结果如下,大概每秒59886.9次请求
3.11切换至.net6.0
再次进行测试
请求300s结果如下,大概每秒62232.7次请求,提升了2346,基于net5.0提升了3.9%
3.12切换至.net7.0
再次进行测试
请求300s结果如下,大概没秒63108次请求,基于net6.0提升876次,提升1.4%,基于net5.0提升3222次,提升5.3%
总结
单纯从接口响应情况来看,net5.0及以上已经有了很大的提升,net6.0,net7.0也都有相应的提升,也为后续的业务处理高并发打下了基础
使用JMeter测试.Net5.0,.Net6.0框架下无数据处理的并发情况的更多相关文章
- [C#] 尝鲜.net6.0的C#代码热重载
看到.NET 6 Preview 1 发布,里面"除了 XAML 热重载之外,还将支持 C# 代码的热重载"一句,觉得有必要试试看,因为XAML热重载功能用起来确实很爽. 首先要下 ...
- 手把手教会 VS2022 设计 Winform 高DPI兼容程序 (net461 net6.0 双出)
本文主要解决两个问题 C# Winform高DPI字体模糊. 高DPI下(缩放>100%), UI设计器一直提示缩放到100%, 如果不重启到100%,设计的控件会乱飞. 建立测试程序 新建.N ...
- 开发基础框架:mybatis-3.2.8 +hibernate4.0+spring3.0+struts2.3
一:项目下载地址(点击 Source code(zip)) https://github.com/fzxblgong/frame_2014-12-15/releases 版本:v1.2大小:20M 二 ...
- API代理网关和OAuth2.0授权认证框架
API代理网关和OAuth2.0授权认证框架 https://www.cnblogs.com/bluedoctor/p/8967951.html 1,授权认证与微服务架构 1.1,由不同团队合作引发的 ...
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...
- 发布并开源自己的一款 基于.Net 4.0 及 netstandard2.0 的 ORM 框架
这款ORM框架的原版在经历过大概十几个项目的磨合,最近整理了一下,原名字为:ZhCun.Framework ,该框架辗转跟了我去过几家公司,大概从2012年出现第一个版本,当时就为简化数据库操作,从优 ...
- .Net Core3.0 WebApi 项目框架搭建 五: 轻量型ORM+异步泛型仓储
.Net Core3.0 WebApi 项目框架搭建:目录 SqlSugar介绍 SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET C ...
- .Net Core3.0 WebApi 项目框架搭建 三:读取appsettings.json
.Net Core3.0 WebApi 项目框架搭建:目录 appsettings.json 我们在写项目时往往会把一些经常变动的,可能会变动的参数写到配置文件.数据库中等可以存储数据且方便配置的地方 ...
- .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证
.Net Core3.0 WebApi 项目框架搭建:目录 什么是JWT 根据维基百科定义,JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某 ...
随机推荐
- 常用排序算法(一)-java实现
排序算法总结 1.十大经典算法及性能 2.具体排序算法 1.冒泡排序 循环过程中比较相邻两个数大小,通过交换正确排位,循环整个数组即可完成排序 图片演示 代码实现Java //冒泡排序 public ...
- Java注释、标识符、关键字
Java注释.标识符.关键字 注释 单行注释以"//" 开始:多行注释以 "/*" 开始,以"*/"结束:文档注释以 "/**&q ...
- 开源流程引擎osworkflow、jbpm、activiti、flowable、camunda哪个好?
市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.其中:Jbpm4.Activiti.Flowable.camunda四个框架同宗同源, ...
- 原生实现.NET5.0+ 自定义日志
一.定义一个静态类 声明一个 ReaderWriterLockSlim 对象 用于并发控制 1 /// <summary> 2 /// IO锁 3 /// </summary> ...
- InheritableThreadLocal 在线程池中进行父子线程间消息传递出现消息丢失的解析
在日常研发过程中,我们经常面临着需要在线程内,线程间进行消息传递,比如在修改一些开源组件源码的过程中,需要将外部参数透传到内部,如果进行方法参数重载,则涉及到的改动量过大,这样,我们可以依赖Threa ...
- Python音频处理基础知识,这不是轻轻松松~~~
大家好鸭,我是小熊猫 咱今天来讲一讲音频处理的基础知识上才艺~~~ 1.声音的基础 2.python读取.wav音频 欢迎加入白嫖Q群:660193417### import wave import ...
- Cron表达式(七子表达式)
一.七子含义 秒 分 时 日 月 周 年 可用的值 0~59 0~59 0~23 1~31 112(JANDEC) 17(SUNSAT) 1970~2099 可用的通配符 , - * / , - * ...
- 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]
ASP.NET Core应用本质上就是一个由中间件构成的管道,承载系统将应用承载于一个托管进程中运行起来,其核心任务就是将这个管道构建起来.在ASP.NET Core的发展历史上先后出现了三种应用承载 ...
- Python: 列表、数组及迭代器切片的区别及联系
1. 对列表和数组进行切片 1.1 切片索引 众所周知,Python中的列表和numpy数组都支持用begin: end语法来表示[begin, end)区间的的切片索引: import numpy ...
- 攻防世界 miscmisc
63.miscmisc(感觉这题挺有意思的,单独拿出来记录一下) 得到一张png,扔进kali中,foremost得到两个zip,打开其中一个,发现一张jpg和一个加密的zip,在jpg中分离出一个z ...