Cassandra 内存配置

Posted

技术标签:

【中文标题】Cassandra 内存配置【英文标题】:Cassandra in-memory configuration 【发布时间】:2012-12-28 12:44:02 【问题描述】:

我们目前评估使用 Apache Cassandra 1.2 作为大规模数据处理解决方案。由于我们的应用程序是读取密集型的,并且为了为用户提供尽可能快的响应时间,我们希望配置 Apache Cassandra 以将所有数据保存在内存中。

在所有列族上将存储选项缓存设置为 rows_only 并为每个 Cassandra 节点提供足够的内存来保存其数据部分是否足够?或者 Cassandra 还有其他可能性吗?

【问题讨论】:

【参考方案1】:

DataStax 在其最新版本的基于 Apache Cassandra 的 NoSQL 数据库中添加了内存计算功能,作为提高在线应用程序性能的一部分。

参考:

http://www.datastax.com/2014/02/welcome-to-datastax-enterprise-4-0-and-opscenter-4-1

【讨论】:

DataStax 是否为 Apache 项目贡献了该功能? 看起来可以通过 datastax 企业获得。但是,不建议用于多个工作负载。 t.co/JJG1SLEajl【参考方案2】:

读取性能调整比写入复杂得多。根据我的经验,您可以考虑一些因素。有些观点与内存无关,但它们也有助于提高读取性能。

1.行缓存:避免磁盘命中,但只有在行不经常更新时才启用。您还可以启用堆外行缓存以减少 JVM 堆使用量。

2.Key Cache:默认开启,无需关闭。在行缓存未命中时避免磁盘搜索。

3.降低memtable flush的频率:调整memtable_total_space_in_mb、commitlog_total_space_in_mb、flush_largest_memtables_at

4.使用 LeveledCompactionStrategy:避免一行分布在多个 SSTable 中。

【讨论】:

以上是关于Cassandra 内存配置的主要内容,如果未能解决你的问题,请参考以下文章

Bitbucket 管道因内存不足而失败,同时在 docker (Scala) 中使用 cassandra 进行测试

cassandra installation

Cassandra 数据库安装部署

Datastax solr:Cassandra 现在将刷新到两个最大的内存表以释放内存

华为云数据库GaussDB(for Cassandra)揭秘第二期:内存异常增长的排查经历

DCE Cassandra 3.9 在加入现有集群期间创建二级索引缓慢