最佳做法是,不要给
Elasticsearch分配超过32GB的RAM(为了安全起见,不要分配31GB),其余的留给文件系统缓存和操作系统使用。由于Lucene不会使用太多堆,它将使用剩余的大部分资源来管理其段。
此32GB限制的原因是,仅当您分配的RAM不超过32GB时,Java才可以使用压缩的指针,如果有更多的RAM,则Java将恢复使用普通指针,并且即使您不使用它,CPU内存带宽性能也会降低有更多的记忆。
因此,由于您有一台拥有大量内存的大型计算机,因此您可以在其上运行两个节点,并为每个节点分配31GB的空间,这将为文件系统缓存留出66GB的空间,Lucene会很乐意吞噬它来做事。
现在,只需知道如果您在一台计算机上运行群集,并且该计算机发生故障,则群集将无法正常运行,客户端应用程序也将如此。但是,如果您有两台这样的大型计算机),请确保进行设置
cluster.routing.allocation.same_shard.host:true,以确保主和副本碎片不会落在同一主机上,因为您将无法从高可用性中受益。
更多信息:
- 阅读为什么ES决定默认情况下使用压缩的oops
- 阅读压缩的oops增强背后的详细信息



