Datastax cassandra遇到性能问题

时间:2015-06-30 07:47:11

标签: performance cassandra datastax

我已经在两台独立的机器上安装了数据传输Cassandra(一台配备16GB RAM,另一台配备32GB RAM)并使用大部分默认配置。

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

我是Cassandra的新手,任何人都可以帮助我。我觉得我在使用Cassandra.yaml配置时出错了。

2 个答案:

答案 0 :(得分:6)

我前段时间对Cassandra进行了基准测试和调整活动。找到了一些有用的设置,如下所述,

  1. 在Cassandra数据部门是基于策略。默认是循环法和令牌识别策略的组合,几乎在所有情况下都能发挥最佳作用。如果您想自定义数据分发,那么可以在Cassandra中编写新的数据分发策略,即根据位置,基于属性等分布数据,这可以最好地满足自定义要求。

  2. Cassandra使用Bloom过滤器来确定SSTable是否包含特定行的数据。我们使用bloom过滤值为0.1来保持效率和开销之间的平衡

  3. 一致性级别是NoSQL数据库中的关键参数。尝试Quorum或一个。

  4. JVM调优中的其他选项,如堆内存大小,幸存者比率应该是达到最佳性能的最佳选择

  5. 如果有大容量内存,则可以增加memTable大小,这可以适应内存,从而提高性能。将memTables刷新到磁盘间隔应足够高,以便它不应执行不必要的IO操作

  6. Cassandra中的并发设置对于扩展非常重要。根据我们的测试和观察结果,我们发现当并发设置为no时,Cassandra的性能会更好。核心* 5和native_transport_max_threads设置为256

  7. 遵循Cassandra推荐的其他调整设置;禁用交换,ulimit设置和压缩设置

  8. Cassandra中的复制因子应该等于no。集群中的节点,以实现系统的最大吞吐量。

  9. 这些主要是为了插入而略微影响读取。 我希望这会对你有所帮助:)。

答案 1 :(得分:1)

您使用的是异步写入吗?

尝试运行cassandra-stress,这样就可以隔离客户端问题。

另一个选择是Brian的cassandra-loader:

https://github.com/brianmhess/cassandra-loader

由于您是用Java编写的,因此请使用Brian的代码作为最佳实践示例。