适用于基准评测的错误消息和补救措施

本文档描述了运行 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 反向代理中配置的主机。

  • 或者,在 hosts 文件中使用映射到 IP 地址 127.0.0.1 的自定义主机名,并为丢失测试和 TLS 反向代理配置此主机名。