Elasticsearch忽略了我的JVM堆大小设置

问题描述

我正在Linux(Ubuntu)的Docker容器内运行Elasticsearch。我遇到了许多circuit_breaking_exception问题,引用了486.3mb的限制;所以我决定稍微增加一下JVM堆大小。我的计算机具有6 GB的物理内存,因此最多3 GB的堆大小应该是安全的。

因此,我已经更改了jvm.options中的设置。认值为:

-xms1g 
-Xmx1g

所以我已经将其更改为:

-xms2g 
-Xmx2g

这是一个曲折:不仅我得到了相同的circuit_breaking_exception,而且尺寸限制相同; echo $ES_JAVA_OPTS返回-Xmx512m -xms512m。这甚至不是认设置。我还尝试过保留认的jvm.options并在user.options内创建一个新的jvm.options.d,结果相同。我想念什么吗?我在这里做错什么了吗?

解决方法

您可以使用env var R将此设置传递给容器。

ES_JAVA_OPTS
,

official installation of ES using docker所示,您可以将其作为env变量传递

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
    container_name: es01
    environment: -> it comes under environment section,removed other settings for brevity
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" --> note this
    

您需要在更改此ES_JAVA_OPTS环境变量值后重新启动Docker容器

,

根据文档,在docker环境中,您必须在docker-compose.yml中设置它

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-compose-file

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...