我想弄清楚是否需要调整当前正在运行的 ElasticSearch 集群。如何检查正在运行的 HotSpot 进程是否正在使用压缩 oop?
答案1
您可以使用集群节点信息 API 并检查using_compressed_ordinary_object_pointers
字段中的字段jvm
。
例如
curl -XGET 'http://localhost:9200/_nodes'
或者
curl -XGET 'http://localhost:9200/_nodes/nodeId1'
或者更具体一点:
curl -XGET 'http://localhost:9200/_nodes/nodeId1,nodeId2/jvm?pretty'
回复
...
"jvm" : {
"pid" : 14520,
"version" : "1.8.0_121",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "25.121-b13",
"vm_vendor" : "Oracle Corporation",
"start_time_in_millis" : 1485817021479,
"mem" : {
"heap_init_in_bytes" : 5368709120,
"heap_max_in_bytes" : 5333843968,
"non_heap_init_in_bytes" : 2555904,
"non_heap_max_in_bytes" : 0,
"direct_max_in_bytes" : 5333843968
},
"gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
"memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ],
"using_compressed_ordinary_object_pointers" : "true"
},
...
答案2
如果你检查 ES 日志,它会告诉你。至少从 2.2.0 版本开始。
它会显示如下内容:
[2015-12-16 13:53:33,417][INFO ][env] [Illyana Rasputin] heap size [989.8mb], compressed ordinary object pointers [true]
这是大概一半的概述这文章,其中顺便提一下,其中包含大量有关调整 ES 实例/节点内存大小的有用信息。