以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报告将以这样的方式显示。↓

加载-***选项
这个选项可以根据时间的推移增减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、微服务化和二维内容感兴趣或想要尝试,非常欢迎与我们一起工作!
