所以我在docker文件中同时定义了xms和xmx,其值分别为 8G
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms8g -Xmx8g"
这是ps -auwx
docker exec -it myContainer ps -auwx | grep -i elastic
elastic+ 1 5.3 56.7 14090492 9320752 ? SLsl Jul11 53:07 /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -Xms1g -Xmx1g -XX:+UseConcM
奇怪的是..为什么每个定义显示1G而不是8G。所以我继续用以下方法检查弹性过程本身:
docker exec -it myContainer curl 'http://localhost:9200/_nodes/stats?pretty=true' | grep heap
"heap_used_in_bytes" : 1202774752,
"heap_used_percent" : 14,
"heap_committed_in_bytes" : 8537636864,
"heap_max_in_bytes" : 8537636864,
"non_heap_used_in_bytes" : 111854000,
"non_heap_committed_in_bytes" : 118992896
这似乎是正确的。
为什么ps -auwx
显示1G而不是8G?
答案 0 :(得分:1)
-Xms1g -Xmx1g
是elasticsearch启动脚本的默认参数,它们在jvm.options
文件中配置,ES_JAVA_OPTS
变量允许您更改Xms
的值和Xmx
。
当您使用重复的Xms
和Xmx
参数调用jvm时,将使用命令最右边的那个,因为ES_JAVA_OPTS
出现在命令调用之后默认值,将使用它们。
查看您的Elasticsearch实例的完整命令,您将看到-Xms8g -Xmx8g
配置,ps
的结果可能被截断了。