ベンチマークのエラーメッセージと対策
これは、Gatling Keycloak ベンチマーク実行時の一般的なエラーメッセージとその対策について説明しています。
ベンチマークが SSLHandshakeException
というメッセージで失敗する場合
- 背景
-
このエラーメッセージは、Keycloak の前に TLS リバースプロキシを使用した場合に表示されました (issue keycloak/keycloak-benchmark#191 を参照)。
- 原因
-
特定の設定では、リバースプロキシはホスト名
localhost
で実行されていました。Java は、ホスト名にドットが含まれている場合にのみサーバー名表示 (SNI) を送信します。 Gamlor のブログ記事「Missing SNI with Java’s HTTPS client」を参照してください。そして、リバースプロキシはその SNI に依存していました。さらなる分析
-
openssl s_client -connect localhost:443
は接続しましたが、SNI が送信されないため、すぐに接続を切断しました。 -
openssl s_client -connect localhost:8443 -servername localhost
は、SNI がリバースプロキシのコマンドラインのホスト名と一致するため、期待どおりに接続されました。
-
- 対策
-
-
localhost
を使用する代わりに、ロードテストのターゲットとしてlocalhost.localdomain
を使用し、TLS リバースプロキシで設定されたホストを使用してください。 -
または、IP アドレス
127.0.0.1
にマップされるカスタムホスト名をhosts
ファイルで使用し、ロードテストと TLS リバースプロキシ用にこれを設定します。
-