为什么Linux进程中的xms xmx数量与elasticsearch统计信息不同?

时间:2019-07-12 02:48:46

标签: elasticsearch

所以我在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?

1 个答案:

答案 0 :(得分:1)

-Xms1g -Xmx1g是elasticsearch启动脚本的默认参数,它们在jvm.options文件中配置,ES_JAVA_OPTS变量允许您更改Xms的值和Xmx

当您使用重复的XmsXmx参数调用jvm时,将使用命令最右边的那个,因为ES_JAVA_OPTS出现在命令调用之后默认值,将使用它们。

查看您的Elasticsearch实例的完整命令,您将看到-Xms8g -Xmx8g配置,ps的结果可能被截断了。