我需要一些帮助提高卡桑德拉阅读性能。随着列族大小的增加,我担心读取性能会下降。我们有关于单节点Cassandra的以下统计信息。卡桑德拉亚马逊EC2,阅读性能实验
操作系统:Linux的 - CentOS版本5.4(最终)
卡桑德拉版本: Apache的卡桑德拉 - 1.1.0
Java版本: “1.6.0_14” 的Java(TM)SE运行环境(建立1.6.0_14-B08) 爪哇热点(TM)64位服务器VM(构建14.0-B16,混合模式)
卡桑德拉配置:(cassandra.yaml)
- rpc_server_type:HSHA
- disk_access_mode:MMAP
- concurrent_reads:64
- concurrent_writes:32
平台:亚马逊EC2/RightScale的m1.Xlarge与4个短暂的磁盘实例与raid0。 (15 GB总内存,4个虚拟核心,2 ECU,翻ECU = 8)
实验的配置: 我试图做一些实验用GC
卡桑德拉配置:
10 GB RAM分配给Cassandra堆,3500MB是堆新的大小。
JVM配置:
JVM_OPTS = “$ JVM_OPTS -XX:+ UseParNewGC”
JVM_OPTS = “$ JVM_OPTS -XX:+ UseConcMarkSweepGC”
JVM_OPTS = “$ JVM_OPTS -XX:+ CMSParallelRemarkEnabled”
JVM_OPTS = “$ JVM_OPTS -XX:SurvivorRatio = 1000”
JVM_OPTS = “$ JVM_OPTS -XX:MaxTenuringThreshold = 0”
JVM_OPTS = “$ JVM_OPTS -XX:CMSInitiatingOccupancyFraction = 40”
JVM_OPTS =“$ JVM_OPTS -XX:+ UseCMSInitiatingOccupancyOnly -XX:+ UseCompressedOops“
从OpsCenter中社区2.个
结果统计:
读请求208至240每秒
写请求18至28每秒
OS加载24.5至25。85
写请求延迟127至160百万分之一
读取请求延迟82202至94612百万分之一
OS发送的网络流量每秒
OS收到网络流量4338 KB平均每秒
OS磁盘队列尺寸13至15 44646 KB平均请求
读取请求待定25至32
OS磁盘延迟48至56毫秒
OS磁盘读取吞吐量每秒
磁盘IOPS 4.6 MB读取420每秒
IOWAIT 80%的CPU平均
空闲13%的CPU平均
Rowcache被禁用。
柱族
一列家族,我只是从通过CLI创建阅读
create column family XColFam
with column_type='Standard'
and comparator = CompositeType(BytesType,IntegerType)';"
列家族的SSTable大小= 7.10 GB,的SSTable计数= 2
XColFam
专栏有59499904没有。估计的行键(大多数是utf8文字,长度不定,通过mx4jtools估计)与像本质薄的列一样,值为0字节.....现在。
大多数行的列数应该非常少,也许是1到10,所以列名第一个组件的大约20到30个字节,第二个是8个字节的整数....组合列的第二个组件是动态的可以重复,但概率很低.......第一个组件在不同品种中重复,但行数可能不同。
我试过SnappyCompression
来压缩列族,但大小没有变化。
我有一个计划的服务,对于小时,20个线程运行,并为多个密钥随机读取请求(每个请求现在它的2个键)此列家庭和读取整行,没有列切片或等
我认为它现在表现不好,因为它每分钟处理的请求太少。在柱子大小不是那么大的时候,它工作得更好。大约是3到4 GB。
我担心读取性能会随着列族大小的增加而降低得太快。
我也试图调整一些GC和内存的东西,因为在那之前我有很多的GC和CPU使用率。数据量较小时,波形非常小的iowait。
我该如何提高Cassandra的性能。您的建议将不胜感激。
阅读请求延迟82202到94612微秒... 82秒延迟? – Crowie 2013-09-09 10:19:43