ES內存使用分析及熔斷器設置


內存占用

ES的JVM heap按使用場景分為可GC部分和常駐部分。 可GC部分內存會隨着GC操作而被回收; 常駐部分不會被GC,通常使用LRU策略來進行淘汰; 內存占用情況如下圖:

  common space包括了indexing buffer和其他ES運行需要的class。indexing buffer由indices.memory.index_buffer_size參數控制, 默認最大占用10%,當full up后,該部分數據被刷入磁盤對應的Segments中。這部分空間是可以被回收反復利用的。

queryCache 是node級別的filter過濾器結果緩存,大小由indices.queries.cache.size 參數控制,默認10%。使用LRU淘汰策略。

requestCache是shard級別的query result緩存,通常 only requests of size 0 such as aggregations, counts and suggestions will be cached。使用LRU淘汰策略。通過indices.requests.cache.size參數控制,默認1%。設置后整個NODE都生效。

fieldDataCache,針對text字段,沒有docValues屬性(相當於列存儲),當對text類型字段進行sort,agg時,需要將對應的字段內容全部加載到內存,這部分數據就放在fieldDataCache。通過indices.fielddata.cache.size 參數限制大小,默認不限制。這種情況下,占用內存會逐漸增多,直到觸發熔斷;新數據無法加載。

segmentsMemory ,緩存段信息,包括FST,Dimensional points for numeric range filters,Deleted documents bitset ,Doc values and stored fields codec formats等數據。這部分緩存是必須的,不能進行大小設置,通常跟index息息相關,close index、force merge均會釋放部分空間。 可以通過命令

GET _cat/nodes?v&h=id,ip,port,r,ramPercent,ramCurrent,heapMax,heapCurrent,fielddataMemory,queryCacheMemory,requestCacheMemory,segmentsMemory

查看當前各塊的使用情況。

熔斷器

Elasticsearch 有一系列的斷路器,它們都能保證內存不會超出限制:

  • indices.breaker.fielddata.limit fielddata 斷路器默認設置堆的 60% 作為 fielddata 大小的上限。
  • indices.breaker.request.limit request 斷路器估算需要完成其他請求部分的結構大小,例如創建一個聚合桶,默認限制是堆內存的 60%。它實際上是node level的一個統計值,統計的是這個結點上,各類查詢聚合操作,需要申請的Bigarray的空間大小總和。 所以如果有一個聚合需要很大的空間,同時在執行的聚合可能也會被break掉。
  • indices.breaker.total.limit 父熔斷,inflight、request(agg)和fielddata不會使用超過堆內存的 70%。
  • network.breaker.inflight requests.limit 限制當前通過HTTP等進來的請求使用內存不能超過Node內存的指定值。這個內存主要是限制請求內容的長度。 默認100%。
  • script.max_compilations_per_minute
  • 限制script並發執行數,默認值為15。

參考文檔 https://www.elastic.co/guide/en/elasticsearch/reference/5.3/circuit-breaker.html#fielddata-circuit-breaker https://www.elastic.co/guide/cn/elasticsearch/guide/cn/_limiting_memory_usage.html http://zhengjianglong.leanote.com/post/ES%E8%AE%BE%E7%BD%AE


免責聲明!

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



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