如何配置Elasticsearch堆大小以更改最大内存大小

对于ElasticSearch,这是非常重要的设置。为了正确设置此设置,必须对系统进行良好的监视。简而言之,我们使用此配置来确定Elasticsearch在开始时分配的内存量以及最大内存使用量。

在配置堆大小之前,我将讨论堆内存概念以正确地监视堆大小。 Java应用程序使用“堆栈”和“堆”方法将数据保存到内存中。

在堆栈类型中,操作系统管理是否将数据存储或删除到内存中。

在堆类型中,应用程序管理内存使用和清理。在Java中,对象存储在堆内存中,并且由于有了称为垃圾收集器的结构,因此可以提供堆内存管理。

什么是垃圾收集器?

在Java中,内存管理是通过JVM和其中包含的Garbage Collector在后台完成的。垃圾收集器通过自动内存管理简化了应用程序开发并缩短了编码时间。同样,垃圾收集器能够处理由于编码错误导致的内存区域泄漏的问题。

垃圾回收是一种自动的内存管理机制。它查看堆内存,检测使用过的对象并删除未引用的对象。未使用的/未引用的对象占用的空间从内存中清除,这增加了可用的空闲内存。执行此过程的机制称为垃圾收集器。

过多的堆大小可用于缓存,但是过多的堆大小会导致垃圾回收器暂停。 GC停止时返回最终用户的时间可能很长。

经历长时间的停顿后,在分布式系统(例如Elasticsearch)中不会发生访问,因为该节点可能与集群隔离。该节点上没有读取或写入操作。如果该节点是主节点,则可以选择一个新的主节点。如果该节点是数据节点,则可能导致分片放置在其他数据节点中。在这种情况下,它将增加网络流量,磁盘上的输入输出操作以及群集的负载。

简而言之,如果将堆大小设置为小于所需大小,则除了内存错误外,还会遇到其他问题。

一些最佳实践笔记;

强烈建议堆大小不超过总内存的一半。因此,如果您有64 GB的内存,则不应将“堆大小”设置为48 GB。

不建议堆大小超过32 GB。

默认情况下,Xms1g和Xmx1g为1 GB。

要更改JVM堆大小,默认路径地址是/etc/elasticsearch/jvm.options。

 

除了这些以外,您还可以共享其他应考虑的因素作为注释。