nodetool信息和java内存不匹配

5hcedyr0  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(341)

在6节点cassandra集群上,堆大小配置为31g。当我运行nodetool info时,我看到了下面的内容

Nodetool info - 
[root@ip-10-216-86-94 ~]# nodetool info
ID                     : 88esdsd01-5233-4b56-a240-ea051ced2928
Gossip active          : true
Thrift active          : false
Native Transport active: true
Load                   : 53.31 GiB
Generation No          : 1549564460
Uptime (seconds)       : 734
Heap Memory (MB)       : 828.45 / 31744.00
Off Heap Memory (MB)   : 277.25
Data Center            : us-east
Rack                   : 1a
Exceptions             : 0
Key Cache              : entries 8491, size 1.12 MiB, capacity 100 MiB, 35299 hits, 44315 requests, 0.797 recent hit rate, 14400 save period in seconds
Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds
Counter Cache          : entries 5414, size 1.22 MiB, capacity 50 MiB, 5387 hits, 10801 requests, 0.499 recent hit rate, 7200 save period in seconds
Chunk Cache            : entries 6164, size 249.5 MiB, capacity 480 MiB, 34840 misses, 177139 requests, 0.803 recent hit rate, 121.979 microseconds miss latency
Percent Repaired       : 0.0%
Token                  : (invoke with -T/--tokens to see all 8 tokens)

使用和分配的堆内存Map到我在jconsole上看到的内容。但对于非堆内存,jconsole显示188mb,而info命令显示277mb,为什么不匹配?

7gcisfzg

7gcisfzg1#

Non-Heap Memory 在jconsole和 Off Heap Memory nodetool展示的是完全不同的东西。
jconsole中的非堆内存是jvm非堆内存池的总和。jvm通过 MemoryPoolMXBean . 从jdk 8开始,这些池包括:
元空间
压缩类空间
代码缓存
因此,非堆池显示jvm用于类元数据和编译代码的内存量。
nodetool从cassandra的列family metrics中获取堆外内存统计信息。这是所有打开表的bloom筛选器、索引摘要和压缩元数据的总大小。
看到了吗 nodetool tablestats 详细的统计数据。

相关问题