如何解析elasticsearch内存分配与集群规划

今天就跟大家聊聊有关如何解析elasticsearch内存分配与集群规划,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1.集群节点内存分配

  1. 每个es节点使用的内存分为两部分,一是JVM堆内存,分配给es进程,一种是堆外内存,供Lucene使用,因此堆内存越小,Elasticsearch(更快的 GC)和 Lucene(更多的内存用于缓存)的性能越好。官方建议把 50% 的可用内存作为 Elasticsearch 的堆内存,保留剩下的 50%。

  2. 每台节点的JVM内存不要超过32GB。 当JVM内存小于32GB时,会采用了内存指针压缩(compressed oops)技术。一旦你越过那个神奇的 ~32 GB 的边界,指针就会切回普通对象的指针。 每个对象的指针都变长了,就会使用更多的 CPU 内存带宽,也就是说你实际上失去了更多的内存。事实上,当内存到达 40–50 GB 的时候,有效内存才相当于使用内存对象指针压缩技术时候的 32 GB 内存。即便你有足够的内存,也尽量不要 超过 32 GB。因为它浪费了内存,降低了 CPU 的性能,还要让 GC 应对大内存。

  3. 禁用Linux系统的交换区

2. 索引分片与集群内存

  1. elasticsearch 官方建议每个分片对应的数据不要超过50GB。

  2. 每个节点1GB内存对应于不多于20个分片。即一台节点最多可以存储32*20个分片

可以根据以上经验去判断集群中的节点个数

看完上述内容,你们对如何解析elasticsearch内存分配与集群规划有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。