广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.Net性能测试框架Crank的使用方法
  • 161
分享到

.Net性能测试框架Crank的使用方法

2024-04-02 19:04:59 161人浏览 薄情痞子
摘要

目录安装Crank创建Crank配置文件启动Crank-Agent启动Crank结果输出更多参考资料Crank 是微软新出的一个性能测试框架,集成了多种基准测试工具,如bombard

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

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

安装Crank

运行如下两个命令分别安装Crankcli(Controller)Agent


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

需要.net SDK 5.0环境

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


PS C:\Users\Stack\Desktop> crank
Crank Benchmarks Controller

The 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-agent
Hosting environment: Production
Content 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.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: none

jobs:
  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: '<name1>: <value1>', 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        |

更多参考资料

crank readme

Benchmarks crank为Benchmarks重构版本

本文示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: .Net性能测试框架Crank的使用方法

本文链接: https://www.lsjlt.com/news/158650.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .Net性能测试框架Crank的使用方法
    目录安装Crank创建Crank配置文件启动Crank-Agent启动Crank结果输出更多参考资料Crank 是微软新出的一个性能测试框架,集成了多种基准测试工具,如bombard...
    99+
    2022-11-12
  • .Net性能测试框架Crank怎么使用
    这篇文章主要介绍“.Net性能测试框架Crank怎么使用”,在日常操作中,相信很多人在.Net性能测试框架Crank怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.Net性能测试框架Crank怎么使用...
    99+
    2023-06-21
  • PHP中的性能测试框架
    随着互联网应用的不断发展,Web应用程序的性能越来越受到关注。在开发Web应用程序时,开发人员需要关注程序的运行效率和响应速度,及时发现并解决性能问题,以提供更好的用户体验。因此,选择一个性能测试工具来评估和优化Web应用程序的性能是非常重...
    99+
    2023-05-23
    框架 PHP 性能测试
  • Android ORM框架的性能简单测试
      前言   看了一下现在的android设备,性能都不差,懒得直接用sqlite,直接上ORM框架把,上网搜了一圈,觉得androrm, ormlite 这两个不错,当...
    99+
    2022-06-06
    性能 orm框架 orm 测试 Android
  • 开源的性能测试框架p-unit怎么用
    本篇文章为大家展示了开源的性能测试框架p-unit怎么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。认识p-unit:一款开源的性能测试框架p-unit 是一款开放源码的性能测试框架,和 JUni...
    99+
    2023-06-03
  • imba框架的简单介绍和性能测试
    这篇文章主要讲解了“imba框架的简单介绍和性能测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“imba框架的简单介绍和性能测试”吧!imba 简单介绍i...
    99+
    2022-10-19
  • go测试框架gomonkey的使用
    要使用Go测试框架gomonkey,您需要按照以下步骤进行设置:1. 安装gomonkey库:```go get github.co...
    99+
    2023-09-20
    go
  • 手写java性能测试框架的实现示例
    目录引言代码分享基础类实现数据库的实现concurrent类引言 之前写过一个性能测试框架,只是针对单一的HTTP接口的测试,对于业务接口和非HTTP接口还无非适配,刚好前端时间工作...
    99+
    2022-11-13
  • Android下Junit测试框架的使用
      package com.example.javabasic;   public class CalculService {   public int add(int...
    99+
    2022-06-06
    junit 框架 Android
  • Pytest自动化测试框架的使用
    目录Pytest和Unittest测试框架的区别?Pytest 安装Pytest 示例标记固件(Fixture)预处理和后处理作用域自动执行参数化总结Pytest和Unittest测...
    99+
    2023-03-19
    Pytest 自动化测试框架 Pytest 自动化
  • kafka性能测试的方法有哪些
    Kafka性能测试的方法有以下几种:1. 基准测试(Benchmarking):使用kafka-producer-perf-test...
    99+
    2023-10-20
    kafka
  • NodeJs测试框架Mocha的安装与使用
    Mocha是运行在nodejs和浏览器下的JavaScript的单元测试框架,官方文档在https://mochajs.org/,相当的容易上手和好用,单元测试框架其实都差不多,基本都包含下面内容: 用于写...
    99+
    2022-06-04
    框架 测试 NodeJs
  • Windows面试必备技能:掌握PHP框架的使用方法
    作为一个PHP开发人员,在面试过程中,掌握PHP框架的使用方法是一个必备的技能。PHP框架是一种为了简化应用程序开发而设计的工具集,它提供了一些常用的功能和基础架构,使得开发者可以更加便捷地进行开发。本文将介绍在Windows平台下,如何...
    99+
    2023-09-21
    框架 windows 面试
  • Java NIO性能测试的方法是什么
    这篇文章主要介绍“Java NIO性能测试的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java NIO性能测试的方法是什么”文章能帮助大家解决问题。时间(ms)文件大小(byte)Bu...
    99+
    2023-06-17
  • .NET使用Collections.Pooled提升性能优化的方法
    目录简介Collections.Pooled如何使用性能对比PooledList<T>PooledDictionary<TKey, TValue>Pooled...
    99+
    2022-11-13
  • 轻量应用服务器性能测试方法
    轻量应用服务器性能测试的方法和流程因应用场景和具体需求而异,以下是一些常用的思路和方法:性能测试的目的和要求:首先确定应用的性能需求和性能目标,明确测试的对象、测试方法、测试指标等,以便更好地定位和解决问题。测试场景和方法选择:针对不同应用...
    99+
    2023-10-25
    性能测试 服务器 方法
  • 云主机性能测试的方法是什么
    云主机性能测试常用的方法有以下几种:1. 压力测试:通过模拟大量用户及请求发送到云主机,测试其在高负载情况下的性能表现。可以使用工具...
    99+
    2023-09-17
    云主机
  • 服务器性能测试的方法有哪些
    服务器性能测试的方法有:1、压力测试,主要看服务器的响应时间,各数据指标是否在正常范围内,是否出现宕机、重启或服务终止的情况;2、容错性测试,通过模拟一些非正常状况,如突然断电、硬盘故障等,查看服务器的自动应变机制是否较好;3、问题排除测试...
    99+
    2022-10-06
  • PHP中封装性的性能测试与优化方法
    摘要:在PHP开发中,封装性的重要性不言而喻。好的封装性可以提高代码的可读性、维护性和复用性。然而,过于复杂的封装可能会导致性能问题。本文将介绍一些测试和优化方法,帮助你确保封装性和性能的平衡。性能测试工具在进行性能测试之前,我们需要一个可...
    99+
    2023-10-21
    PHP性能测试 性能测试与优化 封装性能优化
  • 对Python的Django框架中的项目进行单元测试的方法
    Python中的单元测试 我们先来回顾一下Python中的单元测试方法。 下面是一个 Python的单元测试简单的例子: 假如我们开发一个除法的功能,有的同学可能觉得很简单,代码是这样的: def d...
    99+
    2022-06-04
    框架 单元测试 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作