【问题标题】:Elasticsearch ignores my JVM heap size settingsElasticsearch 忽略了我的 JVM 堆大小设置
【发布时间】:2020-10-06 08:35:54
【问题描述】:

我在 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 并在jvm.options.d 中创建一个新的user.options,结果相同。我错过了什么吗?我在这里做错了吗?

【问题讨论】:

  • 您好,如果您正在构建自己的镜像或使用官方镜像,您能否添加运行 elasticsearch 的方式,如果您可以共享 Dockerfile。对于官方图像,我可以将- "ES_JAVA_OPTS=-Xms2g -Xmx2g" 作为环境变量传递并能够增加堆大小。

标签: elasticsearch docker-compose jvm-arguments


【解决方案1】:

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

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容器

【讨论】:

  • Aww,看起来我正在这样做。我正在修改我的docker-compose.yml,看看会发生什么。非常感谢您的提示。
  • @Gorpik 很高兴您发现它有用,请不要忘记投票并接受答案:D
  • 我只是在检查它是否有效,并且确实有效。再次非常感谢。
【解决方案2】:

您可以使用 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

【讨论】:

  • 这会创建一个新容器,不是吗?我想修改当前的。
【解决方案3】:

根据文档,在 docker 环境中,你必须在 docker-compose.yml 中进行设置

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

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2010-10-20
    • 2016-06-22
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2012-02-08
    相关资源
    最近更新 更多