千家信息网

.Net性能测试框架Crank怎么使用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍".Net性能测试框架Crank怎么使用",在日常操作中,相信很多人在.Net性能测试框架Crank怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2026年11月04日.Net性能测试框架Crank怎么使用

这篇文章主要介绍".Net性能测试框架Crank怎么使用",在日常操作中,相信很多人在.Net性能测试框架Crank怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答".Net性能测试框架Crank怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    Crank 是微软新出的一个性能测试框架,集成了多种基准测试工具,如bombardier、wrk等。

    Crank通过统一的配置,可以转换成不同基准测试工具命令进行测试。

    安装Crank

    运行如下两个命令分别安装Crank的cli(Controller)和Agent。

    dotnet tool update Microsoft.Crank.Controller --version "0.2.0-*" --globaldotnet tool update Microsoft.Crank.Agent--version "0.2.0-*" --global

    需要.Net SDK 5.0环境

    安装完成后执行命令crank,会打印出如下可以配置的参数和介绍,或者github查看相关参数介绍。

    PS C:\Users\Stack\Desktop> crankCrank Benchmarks ControllerThe Crank controller orchestrates benchmark jobs on Crank agents.Usage: Crank [command] [options]Options:  -?|-h|--help         Show help information  -c|--config          Configuration file or url  -s|--scenario        Scenario to execute  -j|--job             Name of job to define  --profile            Profile name  --script             Execute a named script available in the configuration files. Can be used multiple times.  -j|--json            Saves the results as json in the specified file.  --csv                Saves the results as csv in the specified file.  --compare            An optional filename to compare the results to. Can be used multiple times.  --variable           Variable  --sql                Connection string of the SQL Server Database to store results in  --table              Table name of the SQL Database to store results in  --session            A logical identifier to group related jobs.  --description        A string describing the job.  -p|--property        Some custom key/value that will be added to the results, .e.g. --property arch=arm --property                       os=linux

    执行crank-agent,启动基准测试所需的代理服务。github查看相关参数介绍。

    PS C:\Users\Stack\Desktop> crank-agentHosting environment: ProductionContent root path: C:\Users\Stack\.dotnet\tools\.store\microsoft.crank.agent\0.2.0-alpha.21567.1\microsoft.crank.agent\0.2.0-alpha.21567.1\tools\net5.0\any\Now listening on: http://[::]:5010

    创建Crank配置文件

    配置文件参考官方hello.benchmarks.yml示例

    示例文件中引入了bombardier.yml,由于大环境对githubusercontent.com域名不太友好,可以考虑将bombardier.yml下载到本地,imports引入本地路径或者直接将文件内容加入到新建的配置文件。

    imports:  -https://raw.githubusercontent.com/dotnet/crank/main/src/Microsoft.Crank.Jobs.Bombardier/bombardier.yml

    生产中使用推荐imports文件的方式,crank配置文件中做少量配置就可以完成基准测试,并且可以引入不同的Microsoft.Crank.Jobs.XXX/XXX.yml,基于不同的基准测试工具进行测试。

    其他测试工具配置文件都在https://github.com/dotnet/crank/blob/main/src/Microsoft.Crank.XXX下。

    variables:  headers:    none: ''    plaintext: '--header "Accept: text/plain,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7" --header "Connection: keep-alive"'    html: '--header "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header "Connection: keep-alive"'    json: '--header "Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7" --header "Connection: keep-alive"'    connectionclose: '--header "Connection: close"'  presetHeaders: nonejobs:  bombardier:    source:      repository: https://github.com/dotnet/crank.git      branchOrCommit: main      project: src/Microsoft.Crank.Jobs.Bombardier/Microsoft.Crank.Jobs.Bombardier.csproj      sourceKey: bombardier      noBuild: true    readyStateText: Bombardier Client    waitForExit: true    variables:      connections: 256 #设置连接数      warmup: 15 #设置测试预热次数      duration: 15 #设置测试时间      requests: 0 #设置测试请求实例数      rate: 0 #设置每秒请求频率      transport: fasthttp # | http1 | http2  设置使用golang的fasthttp库发送http请求      serverScheme: http      serverAddress: localhost      serverPort: 5000      path:       bodyFile: # path or url for a file to use as the body content      verb: # GET when nothing is specified      customHeaders: [ ] # list of headers with the format: ': ', e.g. [ 'content-type: application/json' ]    arguments: "-c {{connections}} -w {{warmup}} -d {{duration}} -n {{requests}} --insecure -l {% if rate != 0 %} --rate {{ rate }} {% endif %} {% if transport %} --{{ transport}} {% endif %} {{headers[presetHeaders]}} {% for h in customHeaders %}{% assign s = h | split : ':' %}--header \"{{ s[0] }}: {{ s[1] | strip }}\" {% endfor %} {% if serverUri == blank or serverUri == empty %} {{serverScheme}}://{{serverAddress}}:{{serverPort}}{{path}} {% else %} {{serverUri}}:{{serverPort}}{{path}} {% endif %} {% if bodyFile != blank and bodyFile != empty %} -f {{bodyFile}} {% endif %}  {% if verb != blank and verb != empty %} -m {{verb}} {% endif %}"    onConfigure:       # - job.timeout = Number(job.variables.duration) + Number(job.variables.warmup) + 10;  server:    source: #指定需要测试的项目,本文直接使用本地路径      localFolder: .      project: crank_demo.csproj    readyStateText: Application started.    # source: 指定测试项目的远程仓库地址,并通过branchOrCommit指定分支    #   repository: https://github.com/dotnet/crank    #   branchOrCommit: main    #   project: samples/hello/hello.csproj    # readyStateText: Application started.scenarios: #配置基准测试场景  crank_demo: #定义方案名,执行crank命令时指定该名称    application:       job: server # 指定测试项目为上面定义的server    load:      job: bombardier # 指定测试工具bombardier      variables:        serverPort: 5000 #配置http服务端口        path: / #配置http服务地址profiles:  local:    variables:      serverAddress: localhost    jobs:       application:        endpoints:           - http://localhost:5010      load:        endpoints:           - http://localhost:5010

    启动Crank-Agent

    启动agent后执行crank,会有一个如下安装sdk的动作

    [09:29:05.261] Runtime: 6.0.0 (Current)[09:29:05.262] SDK: 6.0.100 (Current)[09:29:05.263] ASP.NET: 6.0.0 (Current)[09:29:05.265] Creating custom global.json[09:29:05.266] Desktop: 6.0.0 (Current)[09:29:05.266] Installing SDK '6.0.100' ...

    所以启动agent时多指定一个dotnethome参数,避免重复安装sdk。

    crank-agent --dotnethome 'C:\Program Files\dotnet'

    启动Crank

    crank --config .\demo.benchmarks.yml --scenario crank_demo --profile local

    --scenario crank_demo: 指定定义的测试场景

    --profile local :设置输出结果到本地,即控制台输出

    可以通过参数指定结果输出到本地json文件(--output results.json )或者数据库(--sql [connection-string] --table [table-name])

    结果输出

    这里省略压测期间的日志输出,直接列出结果。

    | application           |               || --------------------- | ------------- || CPU Usage (%)         | 56            || Cores usage (%)       | 447           || Working Set (MB)      | 140           || Private Memory (MB)   | 157           || Build Time (ms)       | 7,232         || Start Time (ms)       | 501           || Published Size (KB)   | 91,292        || .NET Core SDK Version | 6.0.100       || ASP.NET Core Version  | 6.0.0+ae1a6cb || .NET Runtime Version  | 6.0.0+4822e3c || load                  |                | | --------------------- | -------------- || CPU Usage (%)         | 46             | | Cores usage (%)       | 370            | | Working Set (MB)      | 29             || Private Memory (MB)   | 30             || Build Time (ms)       | 11,891         || Start Time (ms)       | 226            || Published Size (KB)   | 68,228         || .NET Core SDK Version | 3.1.415        || ASP.NET Core Version  | 3.1.21+458d974 || .NET Runtime Version  | 3.1.21+df8abc0 || First Request (ms)    | 185            || Requests              | 912,005        || Bad responses         | 0              || Mean latency (us)     | 4,207          || Max latency (us)      | 138,999        || Requests/sec          | 60,305         || Requests/sec (max)    | 128,523        |

    到此,关于".Net性能测试框架Crank怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    测试 配置 文件 基准 性能 框架 参数 工具 测试工具 输出 命令 结果 学习 不同 项目 服务 地址 场景 更多 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网黑科技 互联网是第几次科技革命的成果 西安纸贵互联网科技有限公司 互联网与科技发展 互联网科技公司怎么样 迪茉互联网科技 远拓互联网科技 顺玮阁互联网科技 苏州大垚互联网科技 科技伦理 互联网公司 新华互联网科技校企合作 互联网科技生活的内容 阿大互联网科技有限公司 成都互联网科技公司工作好不好 众安科技工业互联网合作 信承诺互联网科技有限公司 吉林省码上互联网科技电话 好易买互联网科技 河南商务圈互联网科技有限公司 小牛互联网科技有限公司地址 互联网科技有限公司图片 中正互联网科技招聘 安控科技rtu产品工业互联网 卫星互联网科技股票 互联网企业和科技型企业 米聚互联网科技南京有限公司排面 亳州好赞互联网科技有限公司 国大互联网教育科技有限公司工作 区块链结合互联网科技 上海科技产业互联网平台
    0