.NET 6 EFCore WebApi 使用 JMeter 进行吞吐量测试
.NET 6 EFCore WebApi 使用 JMeter 进行吞吐量测试
开发环境
VS2022
.NET 6
测试环境
测试工具
接口压力测试工具:JMeter
数据库
MySQL 5.7
数据库和WebApi服务在同一台服务器上,JMeter在本人笔记本上。
测试设置
200个线程并发,每个线程循环50次,共10000次请求。

接口代码
模糊查询、排序、分页查询第10页200条数据,参数化查询条件。

EFCore (第一轮请求),测试结果
服务程序部署到测试服务器上测试,连接MySql数据库。
吞吐量
只有200多

每个请求响应时间
最长5秒多

EFCore (第一轮请求结束后,20秒内进行第二轮请求),测试结果
服务程序部署到测试服务器上测试,连接MySql数据库。
经过第一轮10000个请求的充分预热,取第二轮10000个请求的测试结果。
吞吐量
1200多

每个请求响应时间
不到50毫秒

线程占用
最大达到143个线程

EFCore (第一轮请求结束后,20秒后进行第二轮请求),测试结果
吞吐量
1200

每次请求响应时间
100毫秒

线程占用
只有50多个线程

使用FactoryStartNew. StartNewThread
查询代码

FactoryStartNew. StartNewThread代码


使用FactoryStartNew. StartNewThread (第一轮请求),测试结果
服务程序部署到测试服务器上测试,连接MySql数据库。
吞吐量
不到200

每个请求响应时间
最长33秒

使用FactoryStartNew. StartNewThread (第一轮请求结束后,20秒内进行第二轮请求),测试结果
吞吐量
1000多

每个请求响应时间
200毫秒以内

线程占用
高达260多个线程

使用FactoryStartNew. StartNewThread (第一轮并发请求结束后,20秒后进行第二轮请求),测试结果
吞吐量
只有200多

每个请求响应时间
最长达到了30秒
在等待创建线程,.NET默认线程池,1秒才增加一个线程

线程占用
高达230多个线程

对比SqlSugar
同样的数据库,同样的数据,同样的查询,同样的JMeter测试设置,同样取第二轮测试结果。
吞吐量
395

每个请求响应时间
500毫秒

对比FreeSql
同样的数据库,同样的数据,同样的查询,同样的JMeter测试设置,同样取第二轮测试结果。
吞吐量
408

每个请求响应时间
不到500毫秒

对比Dapper.LiteSql
吞吐量
480多

每个请求响应时间
400多毫秒

结论
1. EFCore优秀,吞吐量和响应时间都非常优秀。
2. 使用FactoryStartNew. StartNewThread,能用,但有问题。
3. 如果觉得自己的ORM没问题,那就没有问题了,谁没事闲的做这种测试,慢一点不会死人,用户多了并发多了就加机器,作者和用户永远也不会知道,明明可以达到1000的吞吐量,却一直用的280吞吐量的ORM。
4. 比EFCore慢不丢人。
.NET 6 EFCore WebApi 使用 JMeter 进行吞吐量测试的更多相关文章
- jmeter常量吞吐量定时器
jmeter常量吞吐量定时器
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- Jmeter 聚合报告---测试结果分析
当我们测试完后,最关心就是结果数据了,下面一起来分析Jmeter聚合报告数据. 首先来看下Jmeter的help是如何解释这些含义的. 1.Label - The label of the sampl ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- jmeter与apache测试网站并发
本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求.最后还用linux下的压测工具ab做了简单对比. 1. ...
- Jmeter服务器压力测试使用说明
Jmeter服务器压力测试使用说明 Apache JMeter是Apache组织开发的基于Java的压力测试工具. 官方地址:http://jmeter.apache.org/download_jme ...
- 使用JMeter进行负载测试快速入门
相信JMeter是很多测试人员必备技能之一,今天简单讲一下开发人员如何使用JMeter进行简单的压力测试快速入门. 安装JMeter Jmter官方地址 按提示下载JMeter,然后直接解压就可以用了 ...
- (转)学习使用Jmeter做压力测试(三)--数据库测试
数据库测试 JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本. 根据脚本,JMeter可通过线程组来模拟真实用户对Web ...
- 利用Jmeter进行Web测试
JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JMeter脚本 利用XSLT分析JMeter结果文件 1:JMeter,一个1 ...
随机推荐
- C# --- SqlserverHelper帮助类、快速实现增删改查
using System;using System.Data; using System.Data.SqlClient; namespace Demo.WorkerService { public c ...
- 虚拟机启动时报’A start job is running for /etc/rc.local .. Compatibility错误。
虚拟机启动时报'A start job is running for /etc/rc.local .. Compatibility错误. 问题已经存在很长时间了,但是不影响ssh登录,遂置之未理. 经 ...
- 活动报名:以「数」制「疫」,解密 Tapdata 在张家港市卫健委数字化防疫场景下的最佳实践
疫情两年有余,全国抗疫攻防战步履不停.在"动态清零"总方针的指导下,国内疫情防控工作渐趋规范化.常态化.健康码.行程卡.疫情地图.电子哨兵.核酸码.场所码--各类精准防疫手 ...
- 一种新的UI测试方法:视觉感知测试
什么是视觉测试 视觉测试(Visual Testing),主要检查软件用户界面(UI)是否正确显示给所有用户.它检查网页上的每个元素的形状.大小和位置是否符合预期,还检查这些元素是否在不同的设备和浏览 ...
- Scala(二)IO流 读取文件和保存文件
package com.shujia.scala import java.io.{BufferedReader, FileReader, FileWriter} import scala.io.{Bu ...
- 基于CentOS的IB网卡驱动安装
一.准备步骤 1.查看centos版本 cat /etc/issue或者cat /etc/redhat-release 2.查看linux版本 cat /proc/version或uname -a或 ...
- python自带gui插件tkinter使用小结
1.tkinter简介 Tkinter(即 tk interface,简称"Tk")本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GU ...
- Fibonacci Nim
目录 题意 题解 相关 Ref 题意 [COCI2010-2011#4] HRPA 取石子,但是: 先手第一次可取任意多个石子 此外每次可取的石子的个数,至少为 \(1\) ,至多为上一轮对方所取个数 ...
- Sampler类定义
此是所有采样的基类,这样定义的好处是,我们可以分别测试每一个采样算法. 类定义: #pragma once #ifndef __SAMPLER_HEADER__ #define __SAMPLER_H ...
- 强大博客搭建全过程(1)-hexo博客搭建保姆级教程
1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...