效能測試錯誤訊息與解決方案
此處說明執行 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 反向代理設定此名稱。
-