ES踩坑——提高寫入性能之合理安排加副本和刪索引的時機

問題表現是:

ES集羣的cpu和負載都非常低,幾乎與無數據寫入時一致,indexing rate也很低,基本在2000-5000左右;

但是此時有6個大數據量的任務在並行往ES集羣各自的索引寫入,但是耗時都嚴重變長,比如正常1h運行完畢的寫入任務可以變成14h才運行完畢。

 

問題解決如下:

正常在ES寫入時,會把索引副本關閉,寫完後再加副本。

但是當多個數據源,同時並行往一個ES集羣的多個索引寫入數據時,如果流程設計爲:

數據源寫入ES -> 寫入完畢 -> 加副本、刪除過期索引;

多個任務並行時,依據任務執行完畢順序先後,先執行完畢的任務加副本和刪索引,會影響到後面正在運行的任務的寫入性能。

 

當加副本時,ES主分片會進行復制,此時會佔用寫入性能,導致寫入速率降低;

當刪過期索引時,會產生大量GC,如果寫入任務本身數據量很大,本身GC很高,此時刪索引就不太合適,也會影響寫入性能。

 

所以正確的做法是:

等所有的任務都寫入各自索引完畢後,再統一加副本和刪除過期索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章