基准测试错误消息和解决方法
这描述了运行 Gatling Keycloak 基准测试时常见的错误消息及其解决方法。
基准测试失败,并显示消息 SSLHandshakeException
- 上下文
-
此错误消息出现在 Keycloak 前面使用 TLS 反向代理时(见 issue keycloak/keycloak-benchmark#191)。
- 原因
-
在特定设置中,反向代理在主机名
localhost
上运行。Java 仅在主机名包含句点时才会发送服务器名称指示 (SNI),参见 Gamlor 的博文“Java 的 HTTPS 客户端缺少 SNI”,而反向代理依赖于 SNI。进一步分析
-
openssl s_client -connect localhost:443
连接然后立即断开连接,因为没有发送 SNI。 -
openssl s_client -connect localhost:8443 -servername localhost
按预期连接,因为 SNI 与反向代理命令行中的主机名匹配。
-
- 补救措施
-
-
不要使用
localhost
,而是使用localhost.localdomain
作为负载测试的目标以及 TLS 反向代理中配置的主机。 -
或者,或者在
hosts
文件中使用自定义主机名,该主机名映射到 IP 地址127.0.0.1
,并将此配置用于丢失测试和 TLS 反向代理。
-