0

随着密钥数量的增加,使用 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

这是堆转储。

分析它并没有导致任何结果,只是假设存在内存泄漏,因为我看到很多几乎空的数组和映射。

我很感激想法。

4

2 回答 2

0

调用显式 gc 后堆是否下降?

于 2013-10-29T18:57:30.737 回答
0

听起来您正在缓存数据,但您没有使用 JNA(Java Native Access)。JNA 允许 Cassandra 在堆外存储 O(n) 个数据结构(随着数据集大小增长的数据结构),包括缓存。 本文档介绍了如何设置 JNA。当您定义架构时,您的缓存设置是按表/CF 配置的。

于 2013-10-29T17:45:40.917 回答