乐趣区

关于测试工具:7-堪比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?每次装置都须要半天,翻墙我也解决过了,但还是很慢

    • 倡议 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.Contrib:https://github.com/masastack/…

MASA.Utils:https://github.com/masastack/…

MASA.EShop:https://github.com/masalabs/M…

MASA.Blazor:https://github.com/BlazorComp…

如果你对咱们的 MASA Framework 感兴趣,无论是代码奉献、应用、提 Issue,欢送分割咱们

退出移动版