7. 堪比JMeter的.Net压测工具 - Crank 总结篇 - crank带来了什么
目录
- 堪比JMeter的.Net压测工具 - Crank 入门篇
- 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml
- 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardier
- 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
- 堪比JMeter的.Net压测工具 - Crank 实战篇 - 接口以及场景压测
- 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈
- 堪比JMeter的.Net压测工具 - Crank 总结篇 - crank带来了什么
1. 前言
通过上面的学习,我们已经了解清楚crank的职责以及作用,那么我们重新回来思考一下,crank能为我们带来什么?
2. Crank带来了什么?
- 为分布式压测提供了解决方案、可以模拟更高强度的压测
- 单机压测最多提供65535,通过支持多个Agent可以很轻松的突破这个极限
- 提供了压测结果二次处理的能力,并支持将结果保存到json、csv、数据库甚至是es(目前仍在对接)
- 通过对以往压测数据的结果做折线图的展示
- 通过ci可以完成自动化触发压测,再通过折线图清晰了解每次代码对性能的提升情况
3. Crank还能更进一步吗?
上面的实战训练我们仅仅是做了基础的工作,尽管我们通过模拟多接口同时压测完成了对单场景的压测,但真实的项目远远不会是所有人都同时访问一个页面,而不访问其它页面,那我们如何模拟出更贴近真实场景的用户轨迹呢?
真实的用户场景应该更像

如果我们希望更进一步,想知道我们的系统的极限究竟在哪里,我们可以按照按照此用户场景进行深度还原压测场景,完成对整个场景的压测,并通过调整副本、带宽、Redis集群、数据库集群数量等方式提升QPS,最后通过不断的压测以及配置不断的增加,了解到我们使用什么样的配置、用多少副本、用多少带宽、什么样的Redis、数据库集群能够抗住多少的用户,但这个需要视我们真实的业务场景,如果QPS到100就够用的话,那么我们花费那么高的成本搞那么大的QPS有什么意义呢?我们又不是需要再做一个淘宝出来,实际没有那么高的用户量,搞到极致的优化也只是劳民伤财罢了
4. 疑问
- Agent的压测机配置必须很高吗?
- 压测机的配置高,将赋予压测机更高的压测能力,但QPS的高低并不是通过压测机来决定,Qps低的项目,搞个超级计算机过来,Qps仍然低
- 为何我启动Agent执行任务后每次都需要Install Sdk?每次安装都需要半天,FQ我也处理过了,但还是很慢
- 建议Agent启动时指定dotnethome,并且在启动任务时,最好指定任务的框架环境是已经存在的环境,Agent的启动配置可以查看入门篇,指定任务运行框架可以查看进阶篇
- 为何我通过crank官方的命名运行出错呢?
- crank还在持续更新升级中,可能会出现用新版本的crank发送上文示例不能使用的情况,可以安装指定版本的crank,以上示例都有在0.2.0-alpha.21567.1版本运行成功
- 我想自己搭建Agent的docker镜像,文中提供的镜像不知道是否安全?
- 文中用到的镜像是通过下面的dockerfile编译的,没有搞很复杂的东西,不放心的可以使用自建镜像
- doddgu/crankagent:net5.0是.net 5.0版本
- 我的压测场景也需要登录,但不需要实现每次请求都是一个新的用户,我该选择bombardier还是wrk、wrk2呢?
- 针对压测场景简单的,又不需要实现多用户、不需要动态参数的可以用bombardier、简单不需要学习lua、成本低
- 希望可以用动态参数,玩一些复杂场景的,选择wrk或者wrk2更合适
- 压测场景单一,且不需要实现多用户、不需要动态参数不能使用wrk、wrk2吗?
- bombardier能实现的场景,wrk、wrk2都可以做到
- 针对简单的get请求,不需要更改参数使用wrk一样很简单、使用post请求的需要多掌握一点lua脚本知识,有条件的还是建议使用wrk、wrk2,它更灵活入手成本也不是太大
crank agent dockerfile
FROM mcr.microsoft.com/dotnet/sdk:5.0
ENV PATH="${PATH}:/root/.dotnet/tools"
EXPOSE 5010
RUN dotnet tool install -g Microsoft.Crank.Agent --version "0.2.0-alpha.21567.1"
ENTRYPOINT crank-agent --dotnethome "/usr/share/dotnet"
5. 总结
Crank的功能其实是很单一的,它不像我们起初想象的那样庞大,所有的事情都能做,也没那么复杂,但我们也可以说Crank什么都能干,因为它提供了让我们运行dotnet项目以及在docker中运行dotnet程序的能力。
但它最后能做什么事取决于使用它的人想用它来干什么,它只是一个工具而已,不要把它想得太美好,有了它以后可以不写代码,自动化完成测试工作,我只需要等结果,自动出报告等等……有这样想法的还是去洗洗脸吧,大白天的竟然在做梦?
压测以及性能调优考验的是我们对整个系统的一个全局掌控能力,通过压测让我们知道目前系统的瓶颈在哪里?等我们的业务规模到了瓶颈时,可以通过调优提高项目的QPS、使其响应能力更快,不会因为系统而影响我们的业务,其目的是帮助业务发展的更好,但如果业务没发展起来,一味的陷入性能调优这个深坑中去,会使得我们花费高昂的代价做了没有实际意义的事,就比如说家里总共就四口人,非得搞个中巴,美其名曰可以拉更多的人,过年走亲戚不会坐不下什么的,每次出门费油又心疼的不得了,最后舍不得开了,最后还得花钱给它找停车位,那就得不偿失了
开源地址
MASA.BuildingBlocks:https://github.com/masastack/MASA.BuildingBlocks
MASA.Contrib:https://github.com/masastack/MASA.Contrib
MASA.Utils:https://github.com/masastack/MASA.Utils
MASA.EShop:https://github.com/masalabs/MASA.EShop
MASA.Blazor:https://github.com/BlazorComponent/MASA.Blazor
如果你对我们的 MASA Framework 感兴趣,无论是代码贡献、使用、提 Issue,欢迎联系我们

7. 堪比JMeter的.Net压测工具 - Crank 总结篇 - crank带来了什么的更多相关文章
- 1. 堪比JMeter的.Net压测工具 - Crank 入门篇
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 2. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 3. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardier
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 5. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 接口以及场景压测
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 堪比JMeter的.Net压测工具 - Crank 入门篇
1. 前言 Crank 是.NET 团队用来运行基准测试的基准测试基础架构,包括(但不限于)来自TechEmpower Web 框架基准测试的场景,是2021年.NET Conf 大会上介绍的一项新的 ...
- jmeter的dubbo压测,依赖jar包要放到执行机的lib/ext下
对于jmeter的dubbo压测场景的master-slave结构: 即master的jmeter进行任务的下发和报告的生成,slave进行任务的执行 因为dubbo压测需要依赖很多三方jar包,那么 ...
- HTTP 2.0 之压测工具 Jmeter
年后,德国总部工业平台要做中国本地化,德国的同事过来给我们展示日志的时候,无意间看到了他们应用日志里的 HTTP/2,下意识到,原来他们都已经提供Http 2.0的服务了. 那么问题来了,除了h2lo ...
随机推荐
- 简介GitHub的使用方法--管理个人代码
转自 http://blog.csdn.net/tengyeyijiu/article/details/46446283git是一个分布式版本控制系统,最初由linus torvalds编写,用作Li ...
- linux实用技巧:在虚拟机vmware16软件上安装CentOs8.2虚拟机,重置可用源和安装输入法
前言 开发服务器应用,需要使用到CentOs8.2,安装到虚拟机上方便快捷. 提前准备 Vmware 16虚拟机软件 下载VM16版本及以上的vmware虚拟机版本,否则没有CentOs8选 ...
- [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (2)
[源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (2) 目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (2) 0x00 摘要 0x01 总体流程 ...
- C#使用 WebRequest 异步获取网页并自动忽略SSL证书
C#使用 WebRequest 模拟浏览器请求访问网页并自动忽略HTTPS安全证书 以下两个C#异步方法,封装了WebRequest请求,支持忽略SSL证书. 作者:张赐荣 1.Get请求 ...
- 『无为则无心』Python面向对象 — 45、面向对象编程
目录 1.面向对象编程的概念 2.面向对象编程和面向过程编程的区别 (1)面向过程编程 (2)面向对象编程 3.举例理解面向对象 4.Python的面向对象编程 5.面向对象的几大核心特性 1.面向对 ...
- DotNet Dictionary 实现简介
一:前言 本来笔者对DotNet的Hashtable及Dictionary认识一直集中在使用上,一个直接用object 一个可以用泛型,以前也只大概看过Hashtable的实现.最近查MSDN时发现有 ...
- windows加普通用户加入管理员组
net localgroup administrators 用户名 /add ------------>使用这句命令添加用户到管理组 shutdown -g 重启电脑
- RFC2544吞吐量测试详细步骤-信而泰Renix软件操作演示
关键词:RFC1242:RFC2544:吞吐量:吞吐率. 吞吐量概述:吞吐量即吞吐率,这个词首先在RFC1242中被提出,是评估网络设备性能的首要指标,其定义是在设备没有丢帧的情况下的最大的转发速率, ...
- 企业为什么需要BI报表工具?
企业一旦成规模运作起来,数据量是数以万计的,无论数据还是报表都需要协同管理不断更新.面对各大OA\ERP\CRM系统的数据,传统用Excel处理数据效率是很低下的.要想快速出报表,快速取数,快速做业务 ...
- Android编译优化系列-kapt篇
作者:字节跳动终端技术---王龙海 封光 兰军健 一.背景 本文是编译优化系列文章之 kapt 优化篇,后续还会有 build cache, kotlin, dex 优化等文章,敬请期待.本文由Cli ...