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

相关文章
相关标签/搜索