Elasticsearch 忽略我的 JVM 堆大小设置

Elasticsearch ignores my JVM heap size settings

我在 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 returns -Xmx512m -Xms512m。这甚至不是默认设置。我也试过保留默认 jvm.options 并在 jvm.options.d 中创建一个新的 user.options,结果相同。我错过了什么吗?我在这里做错了什么吗?

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

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

中设置它

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

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