如何找出Cassandra额外的堆外内存使用情况

时间:2018-10-11 12:24:59

标签: cassandra

我有32GB Ram的节点。我设置了20 GB的堆大小。我知道cassandra使用off-heap进行memtable,cache等操作。即使通过memtable,cache等使内存使用率非常低,cassandra还是使用27GB内存。我如何确定cassandra如何使用额外的7GB内存?

1 个答案:

答案 0 :(得分:2)

您可以使用JConsole

获取指标

或者您可以使用Jolokia代理。为此下载并设置jolokia代理到您的Cassandra节点。例如在Linux上

mkdir /opt/jolokia
cd /opt/jolokia
wget https://github.com/rhuss/jolokia/releases/download/v1.4.0/jolokia-1.4.0-bin.tar.gz
tar -xf jolokia-1.4.0-bin.tar.gz

将代理程序路径作为JVM选项添加到cassandra-env.sh文件的末尾,然后重新启动cassandra

echo 'JVM_OPTS="$JVM_OPTS -javaagent:/opt/jolokia/jolokia-1.4.0/agents/jolokia-jvm.jar"' >> /etc/conf/cassandra/cassandra-env.sh

重新启动Cassandra。

然后,您可以查询以下指标:

堆内存总计:

wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Memory/HeapMemoryUsage

总的堆内存:

wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Memory/NonHeapMemoryUsage

内存表使用的堆外内存:

wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=MemtableOffHeapSize

,还适用于Bloomfilter,IndexSummary和Compression元数据:

wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=BloomFilterOffHeapMemoryUsed
wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=IndexSummaryOffHeapMemoryUsed
wget http://localhost:8778/jolokia/read/org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=CompressionMetadataOffHeapMemoryUsed

更新: 来自Jolokia端点的示例响应:

{
   "request":{
      "mbean":"org.apache.cassandra.metrics:keyspace=*,name=CompressionMetadataOffHeapMemoryUsed,scope=*,type=Table",
      "type":"read"
   },
   "value":{
      "org.apache.cassandra.metrics:keyspace=my_keyspace,name=CompressionMetadataOffHeapMemoryUsed,scope=my_table_name,type=Table":{
         "Value":832
      },
      "org.apache.cassandra.metrics:keyspace=system,name=CompressionMetadataOffHeapMemoryUsed,scope=compaction_history,type=Table":{
         "Value":64
      },
      "org.apache.cassandra.metrics:keyspace=my_keyspace,name=CompressionMetadataOffHeapMemoryUsed,scope=my_table_name2,type=Table":{
         "Value":8184
      },
      ...
   }
}