我已经在2台独立的计算机中安装了datastax Cassandra(一台具有16gb RAM,另一台具有32GB RAM),并使用大多数默认配置。

我创建了一个包含700列的表,当我尝试使用java插入记录时,它能够每30秒插入1000条记录,对于我来说,这似乎要少得多,因为按datastax基准测试,它应该在18000+左右。令我惊讶的是,32GB和16GB RAM机器的性能均相同。

我是Cassandra的新手,在这方面,谁能帮助我。我觉得我对Cassandra.yaml配置做错了。

最佳答案

我前一段时间在Cassandra上进行了基准测试和调优活动。找到了下面提到的一些有用的设置,


在Cassandra中,数据划分基于策略。默认值是轮询和令牌感知策略的组合,几乎在所有情况下都效果最佳。如果要自定义数据分发,则可以在Cassandra中编写新的数据分发策略,即根据位置,基于属性等来分发数据,这可能最适合自定义要求。
Cassandra使用Bloom筛选器确定SSTable是否具有特定行的数据。我们使用的布隆过滤器值为0.1,以保持效率与开销之间的平衡
一致性级别是NoSQL数据库中的关键参数。尝试使用Quorum或一个。
JVM调优中的其他选项(例如,堆内存大小,存活率)应该是最佳的,以实现最佳性能
如果有较大的内存可用,则可以增加memTable的大小,使其可以放入内存中,从而提高性能。将memTables刷新到磁盘间隔应足够高,以免执行不必要的IO操作
Cassandra中的并发设置对于扩展很重要。根据我们的测试和观察,我们发现当并发设置为no时,Cassandra的性能更好。核心数* 5和native_transport_max_threads设置为256
遵循Cassandra建议的其他调整设置,例如;禁用交换,ulimit设置和压缩设置
Cassandra中的复制因子应等于no。集群中的节点数量以实现系统的最大吞吐量。


这些主要用于插入,对读取有一点影响。
我希望这能帮到您 :)

关于performance - Datastax cassandra出现性能问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31132497/

10-14 17:59
查看更多