Elasticsearch内存
生活随笔
收集整理的這篇文章主要介紹了
Elasticsearch内存
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
核心概念
內存使用分析
Lucene的內存消耗
Lucene中,索引是存儲在磁盤中,一個索引(Index)由多個段(Segment)組成。當啟動IndexSearcher時,會把倒排索引加載到內存中,基于不同的數據類型生成不同的詞典,比如text生成FST結構的詞典,數值類型生成Bkd tree。
當Doc Values占用的內存小于可用內存時,會加載到內存中,否則會放到page cache中。
Elasticsearch內存
基本的元數據(堆內存)
包括node的元數據和Cluster的元數據,還有內部的一些其他服務,比如線程池,線程隊列等等。
field data cache(堆內存)
用于對分詞字段進行排序或聚合。使用過程中會將所有字段的值加載到內存中,而且構建緩存的代價很高。在正常使用的過程中,不建議使用這個字段進行聚合或者排序,錯誤的使用很容易造成OOM。
請注意,默認的_id這個字段就是text,對他進行排序時會使用fielddata cache
Node Query Cache(堆內存)
每個節點的查詢緩存,以段為基本單元,詳情查看我的另外一篇文章
Shard Request Cache(堆內存)
Shard級別的緩存。主要用于緩存size=0的請求,aggs和suggestions,還有就是hits.total。
Indexing Buffer(堆內存)
用于緩存新索引的數據,當空間填滿之后,會將數據寫到磁盤上成為一個新的段。
聚合操作(堆內存)
聚合會根據需求構建不同的bucket,對單個字段進行聚合可能產生固定數量的bucket,但是某些場景下,比如深層嵌套聚合,或者單個字段不同值過多,都有可能導致生成大量的bucket而OOM。具體可參考
?
總結
以上是生活随笔為你收集整理的Elasticsearch内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf安徒恩服务器不稳定,DNF安图恩掉
- 下一篇: mysql常见函数