Cassandra1.1.2调优笔记 续 -

一个数据存储项目,考虑到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 = 64AND 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 = 64AND 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是不同的。

时间: 2024-09-24 03:38:09

Cassandra1.1.2调优笔记 续 -的相关文章

Solr调优参考-续

solr调优步骤参考这篇blog主要以实践出发,从顶到底,从大到细的思路来进一步描述,solr优化,并且是基于横向发展来说的(管理更多core),对于纵向的(core内部.搜索核心技术). 例如分词.queryparse.分词.实时.分布式的优化.排序等偏轻! 文章有不合理,或者错误的请及时反馈给鹰缘. 1. 最重要.最影响系统整体稳定和吞吐量(针对业务总索引布局优化) 毫无疑问数据的分区管理.扩容是入口.另外,对于长尾应用,就是大量的小搜索接入,此时管理平台是瓶颈. 参考建议1: 将数据分片,

【JVM】调优笔记3-----JVM参数配置 JDK1.8

一.关于JVM参数配置,有多种途径. 1.在tomcat中直接配置的 打开tomcat的安装目录, 在bin下修改catalina.bat文件 添加如下: set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=8" 在这个位置: 启动tomcat即可起作用.   2.使用Myecplise,配置JVM参数 双击Tomcat,打开在如下位置,配置: -Xmx300m -Xms300m -Xmn100m -XX:Surviv

【JVM】调优笔记1-----堆栈概念的对碰

关于JVM的工作原理以及调优是一个向往已久的模块,终于有幸接触到:http://pengjiaheng.iteye.com/blog/518623 那就顺着这个思路,来梳理一下自己看到后的结论和感想.   首先,垫些基础,下面会用到 1.Java基本数据类型的长度 类型 字节 表示范围 包装类 byte(字节型) 1 -128~127 Byte short(短整型) 2 -32768-32767  Short int(整型) 4 -2147483648-2147483647 Integer lo

【JVM】调优笔记2-----JVM在JDK1.8以后的新特性以及VisualVM的安装使用

一.JVM在新版本的改进更新以及相关知识   1.JVM在新版本的改进更新 图中可以看到运行时常量池是放在方法区的 1.1对比: JDK 1.7 及以往的 JDK 版本中,Java 类信息.常量池.静态变量都存储在 Perm(永久代)里.类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉类的元数据和静态变量.当然常量池的东西也会在 Perm 垃圾收集的时候进行处理. JDK 1.8 的对 JVM 架构的改造将类元数据放到本地内存中,另外,将常量池和

JVM学习笔记(四)------内存调优

首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM. 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源(主要是CPU),影响系统的吞吐量.特别要关注Full GC,因为它会对整个堆进行整理,导致Full GC

JVM学习笔记(四)------内存调优【转】

转自:http://blog.csdn.net/cutesource/article/details/5907418 版权声明:本文为博主原创文章,未经博主允许不得转载. 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM. 对JVM内存的系统级的调优主要的目的是减少GC的频率和Fu

《Java程序性能优化》学习笔记 JVM调优

第五章 JVM调优5.1 Java虚拟机内存模型 1.JVM虚拟机将其内存数据分为程序计数器.虚拟机栈,本地方法栈,Java堆,和方法去等部分. 2.Java虚拟机栈,在Java 虚拟机规范中,定义了两种异常与占空间相关,即StackOverError和OutOfMemoryError.如果线程在计算过程中,请求的栈深度大于最大可用的栈深度,则抛出SOE,如果Java栈可以动态扩展,而在扩展栈的过程中,没有足够的内存空间来支持栈的扩展,则抛出OutOfMemoryError. 栈的大小直接决定了

调优SQL过程

您想学习调优 SQL PL 的一些技巧吗?如果是这样的话,本文将描述一些调优 IBM DB2 Universal Database(UDB)V8.2 for Linux,UNIX, and Windows 中的 SQL 过程的常见例子,并将特别关注从其他数据 库管理系统中移植过来的过程.动机 SQL 过程语言(SQL PL)是许多 DB2 开发人员工具箱中的一个流行工具.当将应用程序 从 Oracle.Sybase 或 Microsoft SQL 服务器迁移或移植到 DB2 中时,更是如此.然而

jvm 怎么调优

JVM性能调优 博客分类: JVM JVM垃圾回收与性能调优总结 JVM调优的几种策略 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小. 年轻代(New):年轻代用来存放JVM