Cassandra存储与内存大小调整

时间:2011-12-13 09:27:02

标签: nosql cassandra

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

  • 四核2GHz i7 CPU
  • 2x 750GB磁盘驱动器
  • 16 GB已安装RAM

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

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

另外,我会将Cassandra分配给接近16 GB的堆(-Xmx),还是Cassandra会利用堆外内存?

2 个答案:

答案 0 :(得分:3)

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

如果您的热设备全部适合RAM,或者如果服务速率可以在磁盘上提供,则16GB的RAM足以提供数据。磁盘可以执行大约100个随机IO / s,因此如果您需要超过200次读取/秒,则需要确保数据位于缓存中。 Cassandra导出了良好的缓存统计信息(cassandra-cli show keyspaces),因此您应该能够轻松地了解缓存的有效性。

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

答案 1 :(得分:1)

虽然在Cassandra上使用非常庞大的堆可能是明智的,但在我的公司,到目前为止我们已经使用了10GB到12GB的堆没有任何问题。我们的服务器通常至少有48 GB的内存(RAM很便宜 - 所以为什么不:-))所以我们可能会尝试更多地扩展堆,看看会发生什么。