随着行数的增长,Cassandra 1.2.3堆增长

时间:2013-10-28 15:08:04

标签: java cassandra heap

使用10GB RAM运行Cassandra 1.2.3会导致密钥数量增加时堆使用量不断增加。它现在大约是8.3G,并且节点遇到导致超时的堆压力。

cfstats输出:

Keyspace: profiles
    Read Count: 33775531
    Read Latency: 11.160335890411316 ms.
    Write Count: 146030154
    Write Latency: 0.03436538754180866 ms.
    Pending Tasks: 0
        Column Family: profiles
        SSTable count: 12
        Space used (live): 161353987766
        Space used (total): 161604490499
        Number of Keys (estimate): 162628352
        Memtable Columns Count: 69256
        Memtable Data Size: 58138189
        Memtable Switch Count: 6844
        Read Count: 33775532
        Read Latency: 13.964 ms.
        Write Count: 146030157
        Write Latency: 0.032 ms.
        Pending Tasks: 0
        Bloom Filter False Positives: 2498002
        Bloom Filter False Ratio: 0.31157
        Bloom Filter Space Used: 110145928
        Compacted row minimum size: 30
        Compacted row maximum size: 73457
        Compacted row mean size: 3508

这是堆转储。

分析它并没有导致任何事情,只是因为我看到很多几乎是空的数组和地图,所以存在内存泄漏。

我很欣赏这些想法。

2 个答案:

答案 0 :(得分:0)

听起来你正在缓存数据,但你没有使用JNA(Java Native Access)。 JNA允许Cassandra在堆外存储O(n)数据结构(那些随数据集大小增长的数据),包括缓存。 This document介绍了如何设置JNA。定义架构时,每个表/ CF都配置了缓存设置。

答案 1 :(得分:0)

在调用显式gc之后堆是否会掉线?