在单个主机上运行多节点Elasticsearch集群是否有意义?

时间:2018-11-26 17:02:31

标签: docker elasticsearch

在单个主机上运行多个节点会得到什么?我无法获得可用性,因为如果主机关闭,则整个群集都将随之运行。关于性能有意义吗?一个ES实例不是从主机那里获取了所需数量的资源吗?

2 个答案:

答案 0 :(得分:1)

这取决于您的主机以及如何配置节点。

例如,Elastic建议为Elasticsearch分配最多32GB的RAM(由于Java压缩指针的方式),并为操作系统分配32GB的内存(主要用于磁盘缓存)。

假设您的主机上有超过64GB的ram,比如说128,则有两个节点在同一台计算机上运行是有意义的,两个节点都配置为32GB ram,并为操作系统保留另外的64。 >

答案 1 :(得分:1)

通常不,但是如果您的计算机具有大量的CPU和内存,则可能希望它们正确地利用可用资源。使用Elasticsearch避免大堆通常是一件好事,因为在大堆上进行垃圾回收可能会成为问题,并且无论如何在32 GB以上的情况下,您都会失去指针压缩的好处。大多数情况下,ES不需要大堆。 ES使用的大部分内存是通过内存映射文件来完成的,而这些文件依赖于OS缓存。因此,仅因为您没有为堆分配内存并不意味着它没有被使用:更多可用于缓存的内存意味着您将能够处理更大的碎片或更多的碎片。

因此,如果您运行更多的节点,那么这种优势就消失了,您将内存浪费在冗余堆上,并且节点将争夺资源。通常,您当然应该根据实际内存,缓存和cpu的使用情况来做出这些决定。