一个数据存储项目,考虑到Cassandra卓越的写性能,决定使用Cassandra作为数据存储服务器。
使用前进行了若干性能测试:分别为写性能和读性能。
版本:1.1.2。服务器集群:三台服务器,8核,8G内存,同一局域网。
结果:
写性能测试,复制因子(replication_factor)=2,成功写入一份即可,共测试了4个多小时,写入1亿余条记录,平均每秒6400多条。
读性能测试,使用二级索引查找,成功获取一份即可,平均每秒900多条记录。
-------------------------------------以上结果有待进一步优化------------------------------------
记录下调优主要的几个方面:
1)表创建(使用了CQL),配置相关参数:
compression_parameters:sstable_compression = 'DeflateCompressor'
AND compression_parameters:chunk_length_kb = 64
AND caching='KEYS_ONLY';
其中,compression可以减少磁盘使用量,对读写效率都有一定的提升效果;caching设置为KEYS_ONLY,只对关键字缓存,需要注意的是虽然设置为ALL可以缓存行数据,命中减少两次查找,但是由于数据量大,内存有限,所以会导致查询效率很低。
2)设置两块物理硬盘,路径分别对应的data_file_directories和commitlog_directory
3)cassandra.yaml中commitlog_directory设置为16。
4)concurrent_writes:64(并没有比较修改前后写性能变化,不确定优化效果)
cassandra.yaml中,其余参数不变。
问题:
1)当Cassandra关闭后,内存占用还高达5G,不清楚具体原因。
2)使用主键进行查询,性能比第二主键快的不是一点半点,原因还有待研究。
--------------------------------------------------------后续 优化-------------------------------------------------------
接上:
这几天又做了一些调整,如下,
1)修改JDK,改用JDK7,64位。
2)表创建(使用了CQL),配置相关参数修改为:
compression_parameters:sstable_compression = 'SnappyCompressor'
AND compression_parameters:chunk_length_kb = 64
AND caching='KEYS_ONLY'
AND read_repair_chance = 0.000001;
测试结果:
写平均每秒8400多条。
读平均每秒2000多条记录。
有一定的提升。
PS:对上面第一个问题,我用的是top命令查看, 有以下结果:
Mem: 7772048k total, 5703856k used, 2068192k free, 24992k buffers
是我理解有误,used并不表示使用了多少,而是linux内核当前可控制的内存数,这个和windows是不同的。
分享到:
相关推荐
Cassandra:Cassandra性能调优与最佳实践.docx
### Cassandra 1.0新特性解析与集群部署规划 #### 一、Cassandra 1.0新特性概览 Cassandra 1.0版本引入了一系列关键改进,旨在增强其存储能力、读写效率以及整体系统稳定性。以下是该版本中值得注意的新特性: 1....
分布式存储系统:Cassandra:Cassandra的性能调优与监控.docx
《Cassandra High Performance Cookbook》是一本由Edward Capriolo撰写的关于Apache Cassandra性能调优的权威指南书籍。Apache Cassandra是一个高性能、可扩展的分布式NoSQL数据库系统,广泛用于处理大量数据,并...
Cassandra 参数调优的关键挑战在于,参数变更必须在 conf 目录下的 cassandra.yaml 文件中进行,并且每次修改后需重启系统才能生效。因此,调优过程需要有效地修改参数并确保生效。 【Cassandra 调优算法】 提出的...
token是cassandra里相当重要的一个概念,它是cassandra用来平衡集群内各节点负载的一个属性。cassandra里有不同的token分配策略,推荐采用默认的RandomPartitioner分区策略。在这个策略下,token是一个0~2的127次方...
**ycsb cassandra 压力测试工具** YCSB(Yahoo! Cloud Serving Benchmark)是 Yahoo 开源的一个云服务性能基准测试...通过深入理解 YCSB 的工作原理和 Cassandra 的架构特性,我们可以更好地进行性能调优和容量规划。
在本文中,我们将深入探讨如何将Spring Boot框架与Cassandra数据库集成,并利用Java Persistence API (JPA) 进行数据操作。Spring Boot以其简洁的配置和开箱即用的特性,已经成为Java开发中的首选框架之一。而...
在深入探讨《Cassandra实战.pdf》这一资源时,我们聚焦于Apache Cassandra数据库系统的全面解析与实践应用,这是一份详尽的技术文档,旨在为数据库管理员、开发者以及对分布式数据库技术感兴趣的专业人士提供深入...
- **性能调优**:提供性能调优的最佳实践,包括硬件选型、JVM参数调整、系统监控等方面的内容。 #### 五、Cassandra的高可用与容错机制 - **复制与一致性**:解释Cassandra中数据的复制机制,包括一致性级别的选择...
DevCenter 是一个强大的工具,专为数据科学家、开发人员和管理员设计,用于与Apache Cassandra数据库进行交互。这个工具提供了一个直观的用户界面,使得管理、查询和开发Cassandra数据库变得简单易行。Cassandra是一...
在本文档中,标题“Learning_Apache_Cassandra”透露了内容的主题,即学习Apache Cassandra。Cassandra是一个开源的NoSQL分布式数据库管理系统,它以高可用性和分布式架构著称。该书详细介绍了Cassandra的基本概念、...
Cassandra是一款分布式、高度可扩展的NoSQL数据库系统,由Facebook于2008年开源,并在随后被Apache软件基金会接纳为顶级项目。Cassandra的设计灵感来源于Google的Bigtable,旨在处理大规模的数据存储需求,特别适合...
10. **性能调优**:了解如何调整Cassandra和C#客户端的配置以优化性能,例如批处理大小、超时设置等。 在"CassandraTest"这个项目中,可能包含了一些示例代码,展示了如何在C#中使用Thrift API与Cassandra进行交互...
Cassandra JDBC Driver是一款专为Apache Cassandra数据库设计的Java数据库连接(JDBC)驱动程序,它使得Java应用程序能够通过遵循标准JDBC接口的方式来访问和操作Cassandra数据。Cassandra是一款分布式NoSQL数据库...
Apache Cassandra 是一个分布式数据库系统,特别设计用于处理大规模数据,具备高可用性、...通过了解其核心特性和版本特性,我们可以更好地利用Cassandra构建高可用的应用,并通过配置和调优提升系统的性能和稳定性。
Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
Cassandra-Operator是针对Apache Cassandra在Kubernetes集群中部署和管理的一个开源项目。它使得在Kubernetes环境中运行和扩展Cassandra数据库变得更加简单和自动化。在这个压缩包“cassandra-operator,apache-...