首页 > 解决方案 > 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.optionsinside jvm.options.d,结果相同。我错过了什么吗?我在这里做错什么了吗?

标签: elasticsearchdocker-composejvm-arguments

解决方案


官方使用 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
    

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


推荐阅读