【问题标题】:Cassandra Cache Memory ManagementCassandra 缓存内存管理
【发布时间】:2016-03-23 09:05:55
【问题描述】:

我有 4 个节点 Cassandra 2.1.13 集群,配置如下。

32 GB 内存 最大堆大小 - 8 GB 每个 250 GB 硬盘(非 SSD)。

我正在尝试对写入和读取进行负载测试。我创建了一个多线程程序来创建 5000 万条记录。每行有 30 列。

我能够在 84 分钟内以每秒 9.5K 的插入速度插入 5000 万条记录。

接下来,我尝试使用 32 个客户端随机读取这 5000 万条记录,并且能够以每秒 28K 的速度进行读取。

问题是一段时间后,内存变满并且大部分都被缓存了。差不多 20GB。一段时间后系统由于内存不足而挂起。

如果我清理缓存内存,我的读取吞吐量会下降到每秒 100 次。

我应该如何在不影响读取性能的情况下管理我的缓存。

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 如何检查“内存已满”? Cassandra 日志中是否存在任何 OOM 异常?您是否为系统配置了交换空间?
  • 使用 top 命令我可以看到有不到 500mb 的可用空间。使用 11 GB,其余全部缓存。交换已禁用。

标签: cassandra


【解决方案1】:

您注意到的是 Linux 磁盘缓存,它应该从 RAM 中提供数据,而不是进入磁盘,以加快数据读取访问。请确保了解它是如何工作的,例如见here

由于您已经在使用 top,我建议您在概览中也添加“缓存未命中”(点击 F + 选择 nMaj)。这将在缓存无法提供磁盘读取时向您显示。一旦页面缓存开始饱和,您应该会看到未命中的增加。

我应该如何在不影响读取性能的情况下管理我的缓存。

缓存完全由 Linux 管理,无需您进行任何操作。

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2021-12-11
    • 2015-01-15
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多