如何检查我的ElasticSearch进程是否使用压缩的oops?

我想知道是否需要调整当前运行的ElasticSearch群集。 如何检查正在运行的HotSpot进程是否正在使用压缩的oops?

您可以使用群集节点info API并检查using_compressed_ordinary_object_pointers字段中的using_compressed_ordinary_object_pointers字段。

例如

 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" }, ... 

如果你检查你的ES日志,它会告诉你。 至less从版本2.2.0。

它会显示一行这样的:

 [2015-12-16 13:53:33,417][INFO ][env] [Illyana Rasputin] heap size [989.8mb], compressed ordinary object pointers [true] 

这篇文章概述了一半,顺便说一下,有很多关于内存调整ES实例/节点的信息。