我有一個簡單的專案,允許您將密鑰添加到以嵌入式模式運行 Infinispan 版本 13 的應用程式中的分布式快取。全部發布在這里。
我運行一個可以在 minikube 中運行的 kubernetes 設定。我觀察到,當我使用六個 pod 運行示例并執行滾動更新時,我的 infinispan 性能從推出開始一直??下降到最后一個 pod 重新啟動并創建其快取后四分鐘。在此時間之后,集群再次正常運行。降級是指獲取快取中專案計數的操作需要 2-3 秒才能執行,而正常模式下則低于 0.5 秒。在我的設定中,這種情況一直在發生,并且在四分鐘后再次正常作業。
在沒有 kubernetes 環境的本地機器上運行專案時,我沒有遇到過同樣的延遲。
我曾嘗試使用 TRACE 日志,但在這四分鐘后看不到任何重要事件發生。
我的 Infinispan 配置中是否缺少明顯的東西(您可以在我參考的專案中看到),或者需要執行一些額外的操作?(目前我在啟動時啟動快取,并在關機時執行停止)。
uj5u.com熱心網友回復:
一位同事在非嵌入式模式下運行 Infinispan 時發現了以下日志:
2022-01-09 14:56:45,378 DEBUG (jgroups-230,infinispan-server-2) [org.jgroups.protocols.UNICAST3] infinispan-server-2: removing expired connection for infinispan-server-0 (240058 ms old) from recv_table
在這些日志之后,服務性能再次恢復正常。這導致我們懷疑 JGroups 以某種方式嘗試使用與已洗掉的 pod 的舊連接。通過將Jgroups的conn_close_timeout設定更改UNICAST3為 10 秒而不是默認值 4 分鐘,我們可以確認服務降級在 10 秒而不是 4 分鐘內得到修復。
此外,似乎此修復僅在服務作為 a 運行StatefulSet時有效,而在它作為Deployment. 我沒有確切解釋為什么會這樣,但總而言之,將服務設定為有狀態集,并在 JGroups 配置中更改 UNICAST3 上的 conn_close_timeout 解決了我們的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407867.html
標籤:
上一篇:無法使用KubernetesServiceAccount列出或洗掉ClusterRole或ClusterRoleBinding
下一篇:如何以編程方式從超類生成建構式
