配置基准测试

使用 Gatling 进行的基准测试可以使用各种参数进行配置。

本文档描述了传递给 kcb.sh shell 脚本的命令行选项。要运行基准测试,请参考 从 CLI 运行基准测试

配置概述

该配置允许针对一个或多个 Keycloak 服务器、领域、用户和客户端运行基准测试。所有这些实体都需要在测试运行之前存在。有关如何执行此操作,请参阅 准备 Keycloak 进行测试

如果配置参数允许多个值(例如,Keycloak 服务器 URL)或解析为一系列值(例如,领域名称),则这些值将在场景内随机分配给每个执行。

常规参数

CLI 选项 默认值 备注

--server-url

(未设置)

Keycloak 服务器的 URL。

使用空格分隔多个 URL 以针对多个服务器 URL 运行测试。

--server-url="http://host1:8080/ http://host2:8080/"

--share-connections

false

启用在场景内并发用户之间共享连接。如果负载生成器主机无法处理所需的 TCP 连接数量,这将非常有用。请注意,使用此选项将比现实世界产生更少的目标系统负载。请注意,只有在步骤之间暂停的场景才允许共享连接。

--share-connections=true

--use-all-local-addresses

false

由于测试可能涉及从单个测试系统到服务器上的单个主机:端口的数万个连接,因此我们可能需要添加其他地址来增加我们可以建立的 TCP 连接数量,并且这将启用这些地址的使用。当目标是 localhost 时,不应使用,因为使用外部 IP 地址与本地地址不兼容。

--use-all-local-addresses=true

--scenario

ClientSecret 场景

要运行的场景的完整类名,例如 keycloak.scenario.authentication.AuthorizationCode。有关所有场景的列表,请参阅 场景概述

--increment

(未设置)

用户可以提供增量值以运行增量基准测试,以找到给定系统在模拟中设置的断言下测试的极限。如果 CLI 选项设置没有参数,则默认为 32 的增量值。有关增量可扩展性基准测试如何工作的更多见解,请参阅 单次运行模式与增量运行模式

--debug

(未设置)

如果应为 Gatling 进程启用 Java 远程调试。如果 CLI 选项设置没有参数,则默认为端口 8787。将不同的端口号作为此 CLI 参数的参数添加以更改默认端口。

--users-per-sec

1

开放式工作负载模型:每秒要添加到模拟的用户数量。每个用户将执行模拟一次。

应指定 --users-per-sec--concurrent-users 之一。如果未指定任何一个,则默认为将 --users-per-sec 设置为 1

--concurrent-users

(未设置)

封闭式工作负载模型:执行相同场景多次的用户数量。

应指定 --users-per-sec--concurrent-users 之一。如果未指定任何一个,则默认为将 --users-per-sec 设置为 1

--ramp-up

5

达到全部负载的预热时间。

--measurement

30

测试的测量时间(以秒为单位)。

--user-think-time

0

某些场景中使用的用户思考时间(以秒为单位)。

--log-http-on-failure

(未设置)

如果设置,将记录所有失败的 HTTP 请求到控制台。

在测试期间和分析问题时启用此选项。在负载测试期间切勿使用它,因为它会降低 Gatling 的速度。

--log-http-always

(未设置)

如果设置,将记录所有 HTTP 请求到控制台。

将记录大量信息。仅在开发期间使用它。在负载测试期间切勿使用它,因为它会降低 Gatling 的速度。

--http-proxy

(未设置)

如果设置,将代理所有 HTTP 请求到您选择的代理工具,当前默认代理主机和端口分别为 127.0.0.18888。这些目前不可配置。

在负载测试期间切勿使用它,因为它会降低 Gatling 的速度,以便能够将请求代理到代理客户端,并且通常会带来我们必须谨慎的代理细微差别。

--sla-error-percentage

0

运行期间请求失败的最大百分比。

跨多个领域、用户和客户端运行

CLI 选项 默认值 备注

--realms

1

可用的领域数量。运行使用从 0 到 --realms 减 1 的领域的测试场景。

使用默认值 1 并且未设置 --realm-prefix 时,这将导致仅使用 realm-0

--users-per-realm

1

每个领域中可用的用户数量。运行使用从 0 到 --users-per-realm 减 1 的用户的测试场景。

使用默认值 1 时,这将导致仅使用 user-0

--clients-per-realm

1

每个领域中可用的客户端数量。运行使用从 0 到 --users-per-realm 减 1 的客户端的测试场景。

使用默认值 1 时,这将导致仅使用 client-0

当使用以下示例参数运行 CLI 时

--realm=10 --users-per-realm=10 --client-per-realm=10

这将导致在场景中使用以下值

实体

领域

realm-0 ... realm-9

用户名

user-0 ... user-9

用户密码

user-0-password ... user-9-password

客户端 ID

client-0 ... client-9

客户端密钥

client-0-secret ... client-9-secret

客户端重定向 URL

相应领域的帐户控制台

http://127.0.0.1:8080/realms/realm-0/account ... http://127.0.0.1:8080/realms/realm-9/account

覆盖领域、用户和客户端的默认值

CLI 选项 默认值 备注

--realm-prefix

realm-

设置领域名称的前缀。使用值 myrealm 时,它使用 myrealm-0myrealm-1 等。

如果未在 CLI 上设置,则领域名称使用 realm- 前缀。例如:realm-0realm-1 等。

--realm-name

(未设置)

如果设置,则测试使用此参数中设置的单个领域运行。

如果未设置并且假设 --realm-prefix 未设置,则领域名称从 realm-0 开始编号。

--username

(未设置)

如果设置,则测试使用此参数中设置的单个用户名运行。

如果未设置,则用户名从 user-0 开始编号。

--user-password

(未设置)

如果设置,则测试使用此参数中设置的单个密码运行。

如果未设置,则密码从 user-0-password 开始编号。

--client-id

(未设置)

如果设置,则测试使用此参数中设置的单个客户端 ID 运行。

如果未设置,则客户端 ID 从 client-0 开始编号。

--client-secret

(未设置)

如果设置,则测试使用此参数中设置的单个客户端密钥运行。

如果未设置,则客户端 ID 从 client-0-secret 开始编号。

--client-redirect-uri

(未设置)

如果设置,则测试将使用此参数中设置的单个客户端重定向 URI 运行。

如果未设置,则重定向 URL 是相应领域的帐户控制台。

--scope

(未设置)

在进行身份验证请求时要设置的范围的逗号分隔列表。

如果未设置,则默认范围为 openid profile

其他设置

这些设置仅在场景需要这些设置时才需要。请参阅 场景概述 以查看场景。

CLI 选项 默认值 备注

--admin-username

(未设置)

master 领域中管理员用户的用户名。

--admin-password

(未设置)

master 领域中管理员用户的密码。

--logout-percentage

100

在场景结束时要注销的用户百分比。用于 场景 AuthorizationCode

--refresh-token-period

0

在令牌刷新之间等待的时间段。用于 场景 AuthorizationCode

--refresh-token-count

0

登录后令牌刷新的次数。用于 场景 AuthorizationCode

--refresh-close-http-connection

true

在令牌刷新后关闭 HTTP 连接。用于 场景 AuthorizationCode

--basic-url

(未设置)

要在 场景 Get 中调用的 URL。

进一步阅读

有关可用选项的完整列表,请参阅 Config.java