服務介面的TP99效能降低
(tips:不是所有的ES都適合G1,針對很多大查詢的G1的Full GC會導致GC模式退化為序列掃描整個堆,導致幾十秒甚至是分鐘級別的暫停。這種長時間的暫停不僅影響使用者的查詢,還容易造成節點間的通訊超時,導致master、dataNode脫離叢集,影響叢集穩定性。)
修改為G1後的GC變化:
ES的JVM垃圾回收器調整後,傑夫介面的服務介面的效能並沒有因為GC問題的解決而解決。
原因:
應用中和ES的互動使用的是3.1.9.RELEASE 版本的spring-data-elasticsearch的包,ES資料同步工作是通過該API的中的save方法進行儲存資料的,如下圖所示,該版本的save操作每次save後都會進行refresh操作
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.1.9.RELEASE</version>
為什麼每次refresh會對查詢產生影響呢,今天咱們也趕個時髦,讓GPT給咱們回覆下試試:
升級spring-data-elasticsearch 的版本到4.x以上,由於spring-data-elasticsearch高本版不相容低版本改動成本較大,該專案中的所有涉及API操作的地方都需要改動
save操作改用operation進行操作(目前選擇的該方案,改動較少)
慢查詢已經消失
refresh的次數也降了下來
最終的業務服務介面效能正常了。
教員常說我們總是被經驗主意和投機主義左右我們的思想,破局這一問題的根本解決方式是隻有實事求是,實踐是真理的標準。
作者:京東物流 王義傑
來源:京東雲開發者社群 自猿其說Tech 轉載請註明來源