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?每次安装都需要半天,翻墙我也处理过了,但还是很慢

    • 建议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.0ENV PATH="${PATH}:/root/.dotnet/tools"EXPOSE 5010RUN 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. 6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈

    1. 前言 上面我们已经做到了接口以及场景压测,通过控制台输出结果,我们只需要将结果收集整理下来,最后汇总到excel上,此次压测报告就可以完成了,但收集报告也挺麻烦的,交给谁呢-- 找了一圈.没找到 ...

  2. 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

    1. 前言 上一篇文章我们了解了bombardier,并知道了bombardier.yml与开源项目bombardier的关系,接下来的文章我们了解一下wrk.wrk2,并对比一下它们与bombard ...

  3. 堪比JMeter的.Net压测工具 - Crank 入门篇

    1. 前言 Crank 是.NET 团队用来运行基准测试的基准测试基础架构,包括(但不限于)来自TechEmpower Web 框架基准测试的场景,是2021年.NET Conf 大会上介绍的一项新的 ...

  4. 2. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml

    1. 前言 入门篇我们已经成功运行hello.benchmarks.yml并输出测试结果,本篇我们就hello.benchmarks.yml.以及运行的shell脚本详细解读下其中的含义 2. 剖析h ...

  5. 常用的HTTP服务压测工具

    文章目录 一.压测介绍 1.简介 2.压测相关术语 3.压测常用工具 二.压测工具介绍 1.ab压测 1.1 介绍 1.2 ab压测使用 2.wrk压测 2.1 介绍 2.2 安装 2.3 wrk压测 ...

  6. jmeter constant timer 如何添加_阿里巴巴在开源压测工具 JMeter 上的实践和优化

    Apache JMeter 是 Apache 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史.JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一. 性能测试通 ...

  7. 云效平台性能测试功能:一个基于Jmeter的性能压测平台

    云效平台性能测试功能(Galaxy)是一个基于Jmeter的性能压测平台,它集脚本.场景.压测.监控和报表展示为一体,是一个能快速.低成本实施压测的平台.降低了入门使用成本,让开发和测试都可以方便的执 ...

  8. Jmeter实现多用户压测

    压测工具:jmeter 脚本录制工具:BlazeMeter 使用jmeter实现多用户压测:比如登录这个功能,在浏览器录制脚本的时候找到登录的接口,如下图所示:在浏览器的开发者工具中找到登录所有的请求 ...

  9. Jmeter阶梯式等值压测-详细实战教程(一)

    Jmeter阶梯式等值压测-详细实战教程 导语:全能测开之路小白–Jmeter 作者:变优秀的小白 QQ学习交流群(new): 811792998 QQ群(new): 811792998 注:如中途遇 ...

最新文章

  1. 【TensorFlow2.0】(2) 创建tensor的方法
  2. keepalived 主从配置日志报错:one or more vip associated with vrid mismatch actual master advert...
  3. JavaScript脚本放在哪里
  4. C专家编程--读书笔记十 再论指针
  5. C语言 线性表的链式存储结构(链表实现)
  6. plsql如何显示表结构图_【论文攻略】排版技巧——如何用 Word 编辑参考文献
  7. 订单金额等字段设置decimal时,要禁止为负数
  8. mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析
  9. 解决datepicker设置选中日期setDate不生效问题
  10. Go中的切片Slice
  11. 如何为开源项目做市场
  12. 【后缀数组+???】BZOJ3654 图样图森破
  13. 为什么亚马逊无货源是国际电商新时代
  14. JAVA后台随机生成一个中文名字
  15. 计算机操作系统软件序列号,怎么找我电脑操作系统的序列号?
  16. lua脚本PHP加密网站源码,【几维安全】lua脚本加密,lua代码加密使用说明
  17. mac电脑如何找到usr文件夹
  18. 爬取豆瓣 TOP250 电影排行榜
  19. 智慧医疗是什么?智慧医院包括哪些方面?
  20. Excel如何将多行数据合并为一行并添加间隔符号

热门文章

  1. oracle的环境配置-基本配置
  2. ffmpeg avformat_open_input返回失败的解决办法
  3. Fibonacci Knapsack
  4. C#判断某软件是否安装
  5. 【IfICan】脚步很乱!
  6. 帆软报表(finereport)控件背景色更改
  7. Git删除分支/恢复分支
  8. 03:数据结构 栈、队列、链表与数组
  9. CSS选择器的权重与优先规
  10. boost asio resolver