对于在群集中具有两个节点的专用计算机,ES_HEAP_SIZE的正确值

时间:2016-02-28 01:42:59

标签: elasticsearch

我有一台专用于ES 2.2.0的机器。它在Windows Server 2012 R2上运行,具有128GB内存。关于ES,我计划在这台机器上的集群中有两个节点。根据flexsearch.yml中的ES推荐:

  
    

确保ES_HEAP_SIZE环境变量设置为内存的一半

  

我要设置ES_HEAP_SIZE = 50g

这个值是否合适?

更新

我进一步搜索并找到了这个信息

https://discuss.elastic.co/t/can-i-run-multiple-elaticsearch-nodes-on-the-same-machine/67

似乎&#34; Max heap size for each node instance should be < 32Gb&#34;

任何人都可以对此发表评论吗?

1 个答案:

答案 0 :(得分:4)

最佳做法是将never give more than 32GB内存到Elasticsearch(31GB以保证安全),剩下的就是文件系统缓存和操作系统。由于Lucene不使用太多堆,因此它将使用大部分剩余的可用来管理其段。

这个32GB限制的原因是,只有当你没有分配超过32GB的RAM时,Java才能使用压缩指针,如果有更多的RAM,Java将返回使用普通指针,并且CPU内存带宽性能会下降即使你有更多的记忆。

所以,既然你有一台拥有足够内存的大机器,你可以做的就是在它上面运行两个节点,每个节点分配31GB,为文件系统缓存留下66GB,Lucene很高兴能够做到这一点它的东西。

现在,只要知道如果您在一台计算机上运行群集,并且该计算机出现故障,您的群集就会出现问题,您的客户端应用也将如此。但是,如果您有两台这样的大型计算机(seems to be the case),请确保设置cluster.routing.allocation.same_shard.host: true以确保主要和副本分片不会落在同一主机上,因为您可以没有从高可用性中受益。

更多信息: