以ghz的频率进行gRPC的负载测试(基准测试)

首先

我打算使用一个叫做ghz的工具来进行gRPC的负载测试,但是我不知道「hz」的意思,也不知道怎么读。?它看起来有点像西式厕所。

基本用法

安装方法

因为在GitHub的顶部已经写明了,所以我觉得说明一下也无妨。
我是一名MAC用户,所以我通过brew进行安装。

brew install ghz

执行命令

ghz --config=./config.json

配置文件的内容

{
  "name": "Otsuka Test",
  "call": "akame.Linebot.ReplyMessage",
  "host": "0.0.0.0:50051",
  "total": 15000,
  "concurrency": 300,
  "connections": 300,
  "rps": 3000,
  "data": {
    "line_id": "azusa",
    "text": "{{randomString 10 }}",
    "nonce": "hogehoge"
  },
  "format": "html",
  "output": "report.html",
  "insecure": true,
  "load-schedule": "const",
  "load-start": 0,
  "load-end": 0,
  "load-step": 0,
  "load-step-duration": 0,
  "load-max-duration": 0,
  "concurrency-schedule": "const",
  "concurrency-start": 1,
  "concurrency-end": 0,
  "concurrency-step": 0,
  "concurrency-step-duration": 0,
  "concurrency-max-duration": 0,
  "timeout": "20s",
  "binary": false
}

这次使用的她(gRPC应用程序)

解释config的内容

名字

调用
这是一个调用的方法名。
※ 如果没有使用反射,请额外指定–proto选项。

主持人

總數
這是請求的總數。
例如,如果想在5秒內每秒請求3,000次,那麼總數就是15,000。

并发性。

※ 不是指同时连接数。

连接数量
您可以指定 gRPC 的同时连接数。
不能超过并发选项的数量。

RPS是每秒请求数。
当RPS = 10,总数为100时,
意味着每秒有10个请求,所以完成负载测试需要10秒的计算。

这是要通过gRPC发送的body部分的数据。

生成{{randomString 10}}的描述可以在指定长度(10位)中生成一个随机字符串。
还有其他方便的参数,但不一一列举。

我认为有时候我们希望将数据不是作为固定数据,而是分成几个模式来请求。在这种情况下,如果我们以[]数组形式发送数据,它将会起作用。

[
  {
    "line_id": "azusa",
    "text": "{{randomString 10 }}",
    "nonce": "hogehoge"
  },
  {
    "line_id": "yui",
    "text": "{{randomString 10 }}",
    "nonce": "fugafuga"
  }
]

所以

[
  {
    "line_id": "azusa",
    "text": "{{randomString 10 }}",
    "nonce": "hogehoge"
  }
]

↑這個和
↓這個具有相同的意思。

{
  "line_id": "azusa",
  "text": "{{randomString 10 }}",
  "nonce": "hogehoge"
}

在选择报告的格式上,可以选择。
如果没有设定,则会输出到控制台。

以下是形式的列表。

csv,json,pretty,html,influx-summary,influx-details,prometheus 可用于优化。

由于可以指定InfluxDB,因此可以连接InfluxDB => Grafana,还可以连接prometheus => Grafana。

HTML报告将以这样的方式显示。↓

スクリーンショット 2021-11-29 10.53.05.png

加载-***选项
这个选项可以根据时间的推移增减RPS。
加载计划可以选择const、step或line。
以下是每种加载计划的设置。

    • const

 

    • rpsで指定した秒間リクエストがそのまま実行されます。

 

    • step

 

    • startからendにかけてstep-durationで設定した時間ごとにstep数分rpsが増加or減少します。

 

    • max-durationはendに訪れる前にこの時間を経過すると、その時点でのrpsで負荷テストを続行し、それ以上rpsは増減しません。

 

    • line

 

    startからendにかけて1秒ごとにstep数分rpsが増減します。

并发-***选项
并发-***选项允许根据时间的推移增加或减少并行执行数量。
并发计划可从常量、逐步和线性中选择。
以下是并发计划的各种设置。

    • const

 

    • concurrencyで指定した秒間リクエストがそのまま実行されます。

 

    • step

 

    • startからendにかけてstep-durationで設定した時間ごとにstep数分concurrencyが増加or減少します。

 

    • max-durationはendに訪れる前にこの時間を経過すると、その時点でのconcurrencyで負荷テストを続行し、それ以上concurrencyは増減しません。

 

    • line

 

    startからendにかけて1秒ごとにstep数分concurrencyが増減します。

致读者

我累了,所以我想今天吃点好肉放松一下。

使用公關技巧

如果您对gRPC、微服务化和二维内容感兴趣或想要尝试,非常欢迎与我们一起工作!

undefined
bannerAds