【问题标题】:Cassandra 1.1 - Setup for 24GB RAM and Row CacheCassandra 1.1 - 24GB RAM 和行缓存的设置
【发布时间】:2012-10-23 04:26:19
【问题描述】:

我想针对细行(5-50 列)的重读场景调整 Cassandra。这个想法是使用行缓存,并启用键缓存以防万一 - 当数据对于行缓存来说太大时。

我有双 Intel Xeon 服务器和 24GB RAM(3 个环形,两个数据中心 - 总共提供 6 台机器)

这些是我对默认配置所做的更改:

cassandra-env.sh

#JVM_OPTS="$JVM_OPTS -ea"
MAX_HEAP_SIZE="6G"
HEAP_NEWSIZE="500M"

cassandra.yaml

# do not persist caches to disk
key_cache_save_period: 0
row_cache_save_period: 0

key_cache_size_in_mb: 512
row_cache_size_in_mb: 14336 
row_cache_provider: SerializingCacheProvider

将 6GB 专用于 Cassandra JVM,0.5GB 用于键缓存(在 6GB 堆中),14GB 用于作为堆外的行缓存。 操作系统仍然有 4GB 应该足够了,因为只运行一个 JVM 进程并且它应该有最大 2GB 的开销。

此设置是否最佳?有什么提示吗?

谢谢, 马切耶

【问题讨论】:

  • 列是独立读取的,还是你总是读取一行的所有列?
  • 那么,也许你可以将你的数据序列化到单列(如果不涉及索引),你会减少列数,节省空间和cpu功率。
  • @MaciejMiklas 是否存在堆外的密钥缓存?
  • 不——不可能

标签: cassandra


【解决方案1】:

运行heapspace_calculator 并使用建议的值作为初始堆配置。使用“nodetool info”监控您的堆使用情况。

尽可能使用短列名并合并列。

【讨论】:

    【解决方案2】:

    这个设置工作得很好——我已经测试过了。

    【讨论】:

    • 请接受@Jongtae Lee 的解决方案,而不是您的评论。
    【解决方案3】:

    我使用的是 1.1.6 版本。
    SerializingCacheProvider 会将缓存数据保存在 Native Heap 区域。
    该区域不适用于 GC 检查。所以不会发生GC。
    您的 row_cache_size_in_mb 设置用于 SerializingCache 的参考对象。
    该引用是使用 FreeableMemory 保存的(它在 1.1.x 中。但在 1.2 之后,它发生了变化)。
    也就是说,计算row_cache_size_in_mb时,并没有计算你真正的缓存值。

    结果如果要计算row_cache_size_in_mb,请尝试从最小大小开始设置。
    在我的情况下,当我设置 500mb 时,每个节点都在使用 2G 老一代。(根据交易哪个数据集)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多