效能測試錯誤訊息與解決方案

此處說明執行 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 反向代理設定此名稱。