es優化

1 查看es狀態信息的經常使用命令

#查詢集羣狀態
GET _cluster/health
#查詢每一個節點堆設置的大小
GET _cat/nodes?h=heap.max
#查詢某個索引的分片、段以及所內存
GET _cat/segments/logstash-info-2019.05.22?v&h=shard,segment,size,size.momery
#查詢node上全部segment佔用的memory的總和
GET /_cat/nodes?v&h=name,port,sm

減小數據節點上segment內存佔用的方式

  1. 刪除不用的索引
  2. 關閉索引(文件仍然存在於磁盤,只是釋放掉內存),須要時能夠打開。
  3. 按期對再也不更新的索引force merge。

ES的heap是如何被瓜分掉的?

  1. segment memory
  2. filter cache
  3. field data cache
  4. bulk queue
  5. indexing buffer
  6. state buffer
  7. 超大搜索聚合結果集的fetch
  8. 對高cardinality字段作terms aggregation

gc overhead致使數據節點脫離集羣

筆者線上的heap設置了32G,致使gc的時間過長,從而使節點脫離了集羣。若是把heap size設置的太小,GC太過頻繁,會影響ES入庫和搜索的效率 。經過增長ping_timeout的時間,和增長ping_retries的次數來防止節點錯誤的脫離集羣,能夠使節點有充足的時間進行full GC。能夠經過調整參數來優化。html

discovery.zen.fd.ping_timeout: 1000s
discovery.zen.fd.ping_retries: 10

固然,最好的優化方式,是改進垃圾回收方式,改用G1GC。node

參考文章:
https://www.cnblogs.com/bonel...
https://www.elastic.co/cn/blo...
https://blog.csdn.net/Nonoroy...fetch

相關文章
相關標籤/搜索