问题描述
我正在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