配置基准测试

使用 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 到 --clients-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://localhost:8080/realms/realm-0/account ... http://localhost: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

(未设置)

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

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

--client-redirect-uri

(未设置)

如果设置,测试将使用在此参数中设置的单个 client-redirect-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