我有一台专用于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;
任何人都可以对此发表评论吗?
答案 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
以确保主要和副本分片不会落在同一主机上,因为您可以没有从高可用性中受益。
更多信息: