Elasticsearch JVM 堆内存使用率飙升,怎么办?

Posted 铭毅天下Elasticsearch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch JVM 堆内存使用率飙升,怎么办?相关的知识,希望对你有一定的参考价值。

85%,官方建议采取措施降低内存压力。

1600+Elastic 爱好者一起精进!


比同事抢先一步学习进阶干货

设置环境变量后 Elasticsearch 报告默认堆内存大小

【中文标题】设置环境变量后 Elasticsearch 报告默认堆内存大小【英文标题】:Elasticsearch reports default heap memory size after setting environment variable 【发布时间】:2015-01-23 13:39:30 【问题描述】:

为了在 Windows 机器上增加 Elasticsearch 的 JVM 堆大小,我定义了以下环境变量:

ES_HEAP_SIZE=6g

(机器总共有12G RAM)。

我已经重启了 ES 并使用 _nodes/stat HTTP GET 命令查询了它的内存使用情况。但是,它似乎仍在使用 1GB:

内存:

heap_used_in_bytes: 1032367576,
heap_used_percent: 99,
heap_committed_in_bytes: 1037959168,
heap_max_in_bytes: 1037959168,
...

重启后ES不应该调整它的堆内存大小吗?

【问题讨论】:

【参考方案1】:

来自running ES as a service on windows的注释:

请注意,安装期间可用的环境配置选项会被复制,并将在服务生命周期中使用。这意味着除非重新安装服务,否则安装后对它们所做的任何更改都不会生效。

如果您不想卸载并重新安装,可以使用服务管理器进行更改。运行>service manager

然后选择“Java”选项卡

更改内存池设置,点击“应用”并重新启动服务。

【讨论】:

这会覆盖任何以前配置的环境变量吗? 是的,原来配置的环境变量是用来初始配置服务的。通过在此处进行更改,这将覆盖所有环境变量。【参考方案2】:

在我卸载并重新安装 Elasticsearch Windows 服务后,它正确地增加了 JVM 堆大小。只是重新启动它而不重新安装服务是行不通的。

【讨论】:

这成功了!我正在使用 Windows Server 2012 并且遇到了同样的问题(尽管我使用的是 ES_MIN_MEM 和 ES_MAX_MEM 环境变量 - 然后我添加了 ES_HEAP_SIZE 以进行良好的衡量)。我尝试重新启动(在新的管理员 Powershell 窗口中,以获取环境更改)无济于事。使用 ES_HOME\bin\service.bat stop/remove/install/start(以管理员身份)成功更改了内存分配。它必须在安装期间而不是在运行时获取环境变量。感谢您发布您自己的答案!【参考方案3】:

对于弹性搜索 1.5

一种方法是编辑/bin/elasticsearch.in.sh 文件以默认为其他值,例如 1g。对于您的示例,将ES_MAX_MEM=1g 更改为ES_MAX_MEM=6g。编辑完,重启 Elastic Search 应该就好了。

#!/bin/sh

ES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/elasticsearch-1.5.0.jar:$ES_HOME/lib/*:$ES_HOME/lib/sigar/*

if [ "x$ES_MIN_MEM" = "x" ]; then
    ES_MIN_MEM=256m
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
    ES_MAX_MEM=6g
fi
if [ "x$ES_HEAP_SIZE" != "x" ]; then
    ES_MIN_MEM=$ES_HEAP_SIZE
    ES_MAX_MEM=$ES_HEAP_SIZE
fi

【讨论】:

@jasonrhasss 我在 /bin/elasticsearch.in.sh 中进行了修改,但它对弹性没有影响,但它仍然只使用 1g @RamRajVasavi 你是通过 yum 还是 apt-get 安装的?它可能正在使用不同的启动脚本。另外 - 您使用的是 1.5 版吗?【参考方案4】:

为避免重新安装服务,您可以直接更改注册表中的值。它们有点难以找到:

当然,更改这些设置后,您必须重新启动服务。

【讨论】:

以上是关于Elasticsearch JVM 堆内存使用率飙升,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch JVM 堆内存使用率飙升,怎么办?

设置环境变量后 Elasticsearch 报告默认堆内存大小

Elasticsearch聚合限制内存使用

Elasticsearch7.8.0版本优化——内存设置

windows运行Elasticsearch内存占用过大

记一次 JVM CPU 使用率飙高问题的排查过程