ベンチマークの設定

Gatling を使用したベンチマークテストは、さまざまなパラメーターで設定できます。

これは、kcb.sh シェルスクリプトに渡されるコマンドラインオプションについて説明しています。ベンチマークを実行するには、「CLI からのベンチマークの実行」を参照してください。

設定の概要

この設定により、1つまたは複数の 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

オープンワークロードモデル:シミュレーションに追加される秒あたりのユーザー数。各ユーザーはシミュレーションを 1 回実行します。

--users-per-sec または --concurrent-users のいずれかを指定する必要があります。どちらも指定されていない場合は、デフォルトで --users-per-sec1 に設定されます。

--concurrent-users

(未設定)

クローズドワークロードモデル:同じシナリオを複数回実行するユーザー数。

--users-per-sec または --concurrent-users のいずれかを指定する必要があります。どちらも指定されていない場合は、デフォルトで --users-per-sec1 に設定されます。

--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

各レルムのアカウントコンソール

https://:8080/realms/realm-0/account ... https://: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

(未設定)

設定すると、このパラメーターで設定された単一の 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」を参照してください。