【发布时间】:2015-11-13 00:32:55
【问题描述】:
如何检查分配给 Elasticsearch 引擎的堆大小,有没有办法使用 URL API 检查它?我可以使用 NEST 来检查吗?
谢谢
【问题讨论】:
标签: c# .net elasticsearch
如何检查分配给 Elasticsearch 引擎的堆大小,有没有办法使用 URL API 检查它?我可以使用 NEST 来检查吗?
谢谢
【问题讨论】:
标签: c# .net elasticsearch
在集群环境中,堆设置可以这样查询:
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 是配置的最大堆。
【讨论】:
使用GET _nodes/stats
然后在return /jvm/mem/heap_committed_in_bytes中查看如下
【讨论】:
/_nodes 端点工作正常。
这是一个新帐户,所以我无法评论 jhilden 的回答。他的回答是正确的,但要回答您的评论,我使用的是 chrome 应用程序 Postman。它非常易于使用,非常适合我在使用 Elasticsearch 时使用。
将以下内容放入邮递员并点击发送就可以了!
查看结果并查找“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,
【讨论】:
根据在线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 值。
【讨论】: