es性能調優---寫優化操作


ES 的默認配置,是綜合了數據可靠性、寫入速度、搜索實時性等因素。實際使用時,我們需要根據公司要求,進行偏向性的優化。

寫優化

假設我們的應用場景要求是,每秒 300 萬的寫入速度,每條 500 字節左右。

針對這種對於搜索性能要求不高,但是對寫入要求較高的場景,我們需要盡可能的選擇恰當寫優化策略。

綜合來說,可以考慮以下幾個方面來提升寫索引的性能:

  • 加大 Translog Flush ,目的是降低 Iops、Writeblock。
  • 增加 Index Refresh 間隔,目的是減少 Segment Merge 的次數。
  • 調整 Bulk 線程池和隊列。
  • 優化節點間的任務分布。
  • 優化 Lucene 層的索引建立,目的是降低 CPU 及 IO。

①批量提交

ES 提供了 Bulk API 支持批量操作,當我們有大量的寫任務時,可以使用 Bulk 來進行批量寫入。

每次提交的數據量為多少時,能達到最優的性能,主要受到文件大小、網絡情況、數據類型、集群狀態等因素影響。

 

④減少 Refresh 的次數

Lucene 在新增數據時,采用了延遲寫入的策略,默認情況下索引的 refresh_interval 為 1 秒。

Lucene 將待寫入的數據先寫到內存中,超過 1 秒(默認)時就會觸發一次 Refresh,然后 Refresh 會把內存中的的數據刷新到操作系統的文件緩存系統中。

如果我們對搜索的實效性要求不高,可以將 Refresh 周期延長,例如 30 秒。

這樣還可以有效地減少段刷新次數,但這同時意味着需要消耗更多的Heap內存。

如下所示:

index.refresh_interval:30s

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM