nosql - Cassandra 存储与内存大小

标签 nosql cassandra

我正在考虑使用 Cassandra 后端开发应用程序。我希望我能够在具有以下规范的商品硬件上运行每个 cassandra 节点:

  • 四核 2GHz i7 CPU
  • 2 个 750GB 磁盘驱动器
  • 16 GB 安装内存

现在,我一直在网上阅读 Cassandra 的可用磁盘空间应该是磁盘上存储空间量的两倍,这意味着每个节点(在 RAID-1 配置中设置)都能够存储 375 GB 的数据,这是可以接受的。

我的问题是 16GB RAM 是否足以有效地为每个节点提供 375GB 的数据。开发的应用程序中的数据也将相当依赖于时间,因此最近的数据将是从数据库中读取最多的数据。事实上,大部分数据将在大约 6 个月后被删除。

此外,我会为 Cassandra 分配一个接近 16 GB 的堆 (-Xmx),还是 Cassandra 使用堆外内存?

最佳答案

您不应将 Cassandra 堆设置为超过 8GB;比这更大,垃圾收集会因长时间停顿而杀死你。 Cassandra 将使用缓冲区缓存(与其他应用程序一样),因此不会浪费剩余的内存。

如果您的热数据集都适合 RAM,或者如果服务速率可以从磁盘提供,则 16GB 的 RAM 将足以提供数据。磁盘可以执行大约 100 次随机 IO/s,因此如果您需要超过 200 次读取/秒,您需要确保数据在缓存中。 Cassandra 导出良好的缓存统计信息(cassandra-cli 显示键空间),因此您应该能够轻松判断缓存的有效性。

请记住,RAID-1 中只有两个磁盘,您不会有专门的提交日志。这可能会严重影响写入性能。如果确实影响性能,您可能需要考虑关闭提交日志,并放弃持久写入。

关于nosql - Cassandra 存储与内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486861/

相关文章:

azure - 如何加速 Cosmos DB 聚合查询?

Cassandra where IN 子句限制

Cassandra 查询特定节点

Cassandra CQL 缺少 EOF

perl - 为什么在使用 Net::Cassandra::Easy 和 Cassandra 0.5x 插入行时出现错误?

node.js - 限制nodejs中cassandra db的并行请求数量

ios - 查询 Firebase 用户以检查联系人是否存在于数据库中

.net - 选择什么作为 .NET 应用程序的 light infile nosql 数据存储?

c# - 从 MongoDB 数组中删除元素

cassandra - 使用 phpcassa 对 cassandra 进行多重查询