ElasticSearch調優問題

1. 近期遇到一個ES內存居高不下的問題,查了查,發現ES有個fielddata,當你發起一個查詢,分析字符串的聚合將會被加載到 fielddata,若是這些字符串以前沒有被加載過。若是結果中 fielddata 大小超過了指定 大小 ,其餘的值將會被回收從而得到空間。默認狀況下,設置都是 unbounded ,Elasticsearch 永遠都不會從 fielddata 中回收數據。設想咱們正在對日誌進行索引,天天使用一個新的索引。一般咱們只對過去一兩天的數據感興趣,儘管咱們會保留老的索引,但咱們不多須要查詢它們。不過若是採用默認設置,舊索引的 fielddata 永遠不會從緩存中回收! fieldata 會保持增加直到 fielddata 發生斷熔,這樣咱們就沒法載入更多的 fielddata。這個時候,咱們被困在了死衚衕。但咱們仍然能夠訪問舊索引中的 fielddata,也沒法加載任何新的值。相反,咱們應該回收舊的數據,併爲新值得到更多空間。設置indices.fielddata.cache.size參數就是一個比較好的解決方案。另外設置bootstrap.mlockall: true能夠容許 JVM 鎖住內存,禁止操做系統交換出去,從而提升性能。html

 監控節點:GET _nodes/statsnode

 監控集羣:GET _cluster/statsbootstrap

參考文檔:緩存

1. https://www.elastic.co/guide/cn/elasticsearch/guide/current/_limiting_memory_usage.html  限制ES內存使用elasticsearch

2. https://www.elastic.co/guide/cn/elasticsearch/guide/current/heap-sizing.html 堆內存設置ide

3. https://www.elastic.co/guide/cn/elasticsearch/guide/current/_monitoring_individual_nodes.html 監控信息性能

相關文章
相關標籤/搜索