shareChannel 对加特林 gRPC 的影响

问题描述 投票:0回答:1

我有一个运行 5000 bidiStream gRPC 用户的场景,每秒增加 2 个用户,这是我当前的设置

val grpcConf = grpc(managedChannelBuilder(s"${url}").usePlaintext())
                //.shareChannel
val settings_Result = grpc("name")
    .bidiStream[RequestName, ResponseName](RelayServerGrpc.METHOD, "NameStream")
//exec scenario
exec(
    httpconf.PaymentFinalizerProcess_Result
      .connect
      .header(metadataObject.Authorization)(s"Bearer ${metadataObject.TokenKey}")
      .endCheck(statusCode is Status.Code.OK)
  )
.exec(REST_API)
.exec(bidiStream_Complete)

通常我会在大约 1800 个用户(时间戳 900 秒)时开始出现

INTERNAL
错误,但是当我打开
.shareChannel
时,它会在 900 个用户(时间戳 450 秒)时更快出现。我已经用这两种设置测试了相同的场景大约 3-4 次,以确保原因是启用
.shareChannel

所以我想询问

.shareChannel
的效果,以了解更多并改进这个脚本,请帮助我。

scala grpc gatling
1个回答
0
投票

如果使用

shareChannel
,则所有虚拟用户
share
相同
ManagedChannel

One

ManagedChannel
(大致)使用一个 TCP 连接来处理所有请求。

grpc 中的托管通道上有多个存根?
与 gRPC 的 TCP 会话

共享 TCP 连接可以降低资源消耗,因此可以达到更高的吞吐量。如果服务器处理大量连接的能力在负载测试中并不重要,这会很有用。


在您的情况下,您的服务器(或负载生成器)似乎无法在单个连接中处理大量请求。没关系,只是不要使用

shareChannel
选项。这样负载测试更加真实。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.