Elasticsearch 忽略我的 JVM 堆大小设置

Gor*_*pik 6 jvm-arguments elasticsearch docker-compose

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

所以我去改变了设置jvm.options。默认为:

-Xms1g 
-Xmx1g
Run Code Online (Sandbox Code Playgroud)

我已将其更改为:

-Xms2g 
-Xmx2g
Run Code Online (Sandbox Code Playgroud)

事情的转折来了:我不仅不断地得到相同的circuit_breaking_exception尺寸限制;而且我还不断地获得同样的东西。echo $ES_JAVA_OPTS返回-Xmx512m -Xms512m。这甚至不是默认设置。我还尝试保留默认值jvm.options并创建一个新的user.optionsinside jvm.options.d,结果相同。我错过了什么吗?我在这里做错了什么吗?

小智 11

如官方使用docker安装ES所示,可以将其作为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
    
Run Code Online (Sandbox Code Playgroud)

ES_JAVA_OPTS更改此env变量值后需要重新启动docker容器


use*_*753 5

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

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" docker.elastic.co/elasticsearch/elasticsearch:7.9.2
Run Code Online (Sandbox Code Playgroud)

  • 这将创建一个新容器,不是吗?我想修改一下当前的。 (3认同)