【问题标题】:Checking Elasticsearch Heap Size检查 Elasticsearch 堆大小
【发布时间】:2015-11-13 00:32:55
【问题描述】:

如何检查分配给 Elasticsearch 引擎的堆大小,有没有办法使用 URL API 检查它?我可以使用 NEST 来检查吗?

谢谢

【问题讨论】:

    标签: c# .net elasticsearch


    【解决方案1】:

    在集群环境中,堆设置可以这样查询:

    curl -sS  "localhost:9200/_cat/nodes?h=heap*&v"
    

    例如:

    curl -sS  "localhost:9200/_cat/nodes?h=heap*&v"
    heap.current heap.percent heap.max
         321.1mb           32  989.8mb
         424.1mb           42  989.8mb
         280.3mb           28  989.8mb
    

    这也可以从 ps 结果中检查,尽管它只会揭示最小值-最大值。

    ~#ps aux | grep --color=auto -i Xms
    elastic  6020  0.0  0.0  12788   936 pts/4    S+   04:24   0:00 grep --color=auto -i Xms elastic+  7218
    0.6  9.5 5001220 1565112 ?     Ssl  Jun24   5:14 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.WoiU4NhH -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/elasticsearch -XX:ErrorFile=/var/log/elasticsearch/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/var/log/elasticsearch/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Xms1g -Xmx1g -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -Des.distribution.flavor=default -Des.distribution.type=deb -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid --quiet
    

    其中 -Xms 是最小堆,-Xmx 是配置的最大堆。

    【讨论】:

    • 酷,REST API 在最新的 ES (7.14) 上也能正常工作。
    【解决方案2】:

    使用GET _nodes/stats

    然后在return /jvm/mem/heap_committed_in_bytes中查看如下

    【讨论】:

    • 我应该运行什么来使用 GET ?我正在使用窗户
    • 该命令会使集群中的所有节点崩溃! /_nodes 端点工作正常。
    【解决方案3】:

    这是一个新帐户,所以我无法评论 jhilden 的回答。他的回答是正确的,但要回答您的评论,我使用的是 chrome 应用程序 Postman。它非常易于使用,非常适合我在使用 Elasticsearch 时使用。

    将以下内容放入邮递员并点击发送就可以了!

    http://localhost:9200/_nodes/stats

    查看结果并查找“jvm”块。这是我在默认的 elasticsearch 设置上运行它时返回的内容:

    "jvm": {
        "timestamp": 1477474766408,
        "uptime_in_millis": 1309586,
        "mem": {
          **"heap_used_in_bytes": 87134248**,
          "heap_used_percent": 8,
          "heap_committed_in_bytes": 259522560,
          "heap_max_in_bytes": 1038876672,
          "non_heap_used_in_bytes": 56166992,
          "non_heap_committed_in_bytes": 57348096,
    

    【讨论】:

      【解决方案4】:

      根据在线documentation,除非您在环境变量 [ES_HEAP_SIZE] 中明确提及,否则默认堆大小为 1 Gb

      Elasticsearch 的默认安装配置为 1 GB 堆。对于几乎每个部署,这个数字都太小了。 如果您使用默认堆值,您的集群可能是 配置错误。

      在 Elasticsearch 中有两种方法可以更改堆大小。这 最简单的方法是设置一个名为 ES_HEAP_SIZE 的环境变量。什么时候 服务器进程启动,它将读取此环境变量并 相应地设置堆。例如,您可以通过 命令行如下:

      export ES_HEAP_SIZE=10g 或者,您可以传入堆大小 在启动进程时通过命令行参数,如果是 更容易设置:

      ./bin/elasticsearch -Xmx10g -Xms10g

      确保最小 (Xms) 和最大 (Xmx) 大小相同,以防止 在运行时调整堆大小,这是一个非常昂贵的过程。

      一般情况下,最好设置 ES_HEAP_SIZE 环境变量 过度设置显式 -Xmx 和 -Xms 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-15
        • 2011-02-23
        • 2015-12-30
        • 2014-12-07
        • 1970-01-01
        • 2015-02-14
        • 2021-07-27
        相关资源
        最近更新 更多