ES的内存xms和xmx设置不一致导致启动失败

ES的内存xms和xmx设置不一致导致启动失败

问题背景与现象

ES启动失败:

1. 页面显示ES实例启动失败,查看详情是Xms和Xmx大小不一致;

ES的内存xms和xmx设置不一致导致启动失败

2. 查看ES后台日志,报错如下,初始化内存和最大内存不一致,导致启动失败

/var/log/Bigdata/elasticsearch/esnode1/elasticsearch_cluster.log

2018-12-11T17:21:49,670][INFO ][o.e.b.BootstrapChecks    ] [EsNode1] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2018-12-11T17:21:49,673][ERROR][o.e.b.Bootstrap          ] [EsNode1] node validation exception
[1] bootstrap checks failed
[1]: initial heap size [536870912] not equal to maximum heap size [1073741824]; this can cause resize pauses and prevents mlockall from locking the entire heap
[2018-12-11T17:21:49,677][INFO ][o.e.n.Node               ] [EsNode1] stopping ...
[2018-12-11T17:21:49,708][INFO ][o.e.n.Node               ] [EsNode1] stopped
[2018-12-11T17:21:49,708][INFO ][o.e.n.Node               ] [EsNode1] closing ...
[2018-12-11T17:21:49,721][INFO ][o.e.n.Node               ] [EsNode1] closed

原因分析

如果JVM以不等的初始(Xms)和最大(Xmx)堆(heap)大小启动,则可能会在系统使用期间调整JVM堆的大小,因此可能会暂停。为了避免这些调整大小的停顿,需要使初始(Xms)堆(heap)大小等于最大Xms堆(heap)大小启动JVM。另外,启用了bootstrap.memory_lock,JVM将在启动时锁定堆(heap)的初始(Xms)大小。如果初始堆大小不等于最大堆大小,在重新调整大小之后,将不会将所有JVM堆锁定在内存中。

因此是ES的内核限制,要求ES的启动参数的初始(Xms)和最大(Xmx)内存相等。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注