Amazon ec2 Cassandra Amazon EC2,阅读性能实验
我需要一些帮助来提高卡桑德拉的阅读能力。我担心随着列族的增大,读取性能会下降。我们对单节点Cassandra有以下统计信息 操作系统:Linux-CentOS 5.4版(最终版)Amazon ec2 Cassandra Amazon EC2,阅读性能实验,amazon-ec2,cassandra,iowait,Amazon Ec2,Cassandra,Iowait,我需要一些帮助来提高卡桑德拉的阅读能力。我担心随着列族的增大,读取性能会下降。我们对单节点Cassandra有以下统计信息 操作系统:Linux-CentOS 5.4版(最终版) Cassandra版本:apache-Cassandra-1.1.0 Java版本:“1.6.0\u 14” Java(TM)SE运行时环境(build 1.6.0_14-b08) Java HotSpot(TM)64位服务器虚拟机(构建14.0-b16,混合模式) 卡桑德拉配置:(Cassandra.yaml) r
Cassandra版本:apache-Cassandra-1.1.0
Java版本:“1.6.0\u 14” Java(TM)SE运行时环境(build 1.6.0_14-b08) Java HotSpot(TM)64位服务器虚拟机(构建14.0-b16,混合模式) 卡桑德拉配置:(Cassandra.yaml)
- rpc_服务器_类型:hsha
- 磁盘访问模式:mmap
- 并发读数:64
- 并发写入:32
实验配置: 我试着用GC做了一些实验 卡桑德拉配置:
10 GB RAM分配给Cassandra堆,3500MB是堆的新大小 JVM配置:
JVM_OPTS=“$JVM_OPTS-XX:+UseParNewGC”
JVM_OPTS=“$JVM_OPTS-XX:+UseConMarkSweepGC”
JVM_OPTS=“$JVM_OPTS-XX:+cmsparallelremarketabled”
JVM_OPTS=“$JVM_OPTS-XX:SurvivorRatio=1000”
JVM_OPTS=“$JVM_OPTS-XX:MaxTenuringThreshold=0”
JVM_OPTS=“$JVM_OPTS-XX:cmSinitiatingOccinecyFraction=40”
JVM_OPTS=“$JVM_OPTS-XX:+UseCmSinitiatingOccupancy-XX:+UseCompressedOops”
OpsCenter社区2.0的结果统计信息:
每秒读取请求208到240次
每秒写入18到28个请求
操作系统负载24.5到25.85
写入请求延迟127到160微秒
读取请求延迟82202到94612微秒
操作系统发送的网络流量平均每秒44646 KB
操作系统平均每秒接收到4338 KB的网络流量
操作系统磁盘队列大小13到15个请求
读取挂起的请求25到32个
操作系统磁盘延迟48到56毫秒
操作系统磁盘读取吞吐量每秒4.6 Mb
磁盘IOPs每秒读取420次
IOWait 80%CPU平均值 平均13%CPU空闲 行缓存已禁用
柱族
我仅从中读取的一个列族是通过CLI创建的
创建柱族XColFam
带列\u type='Standard'
和comparator=CompositeType(ByTestType,IntegerType)';"
列族SSTable Size=7.10 GB,SSTable Count=2
XColFam
column系列现在有59499904个估计行键(大多数是长度不同的utf8文本,通过mx4jtools估计),列的性质类似于thin,值为0字节
大多数行的列数应该非常少,可能是1到10,因此列名称的第一个部分大约有20到30个字节,第二个部分是8个字节的整数……复合列的第二个部分是动态的,可以重复,但概率很低……第一个部分在不同的地方重复,但行中的列数可能不同
我尝试了SnappyCompression
来压缩列族,但大小没有变化
我有一个定时服务,它运行了20个线程数小时,并对该列族的多个键(现在每个请求2个键)发出随机读取请求,并读取整行、无列切片等
我认为它现在的性能不好,因为它每分钟处理的请求太少了。以前,当列族的大小不是那么大时,它工作得更好。它大约是3到4 GB
我担心,随着列族大小的增加,读取性能下降得太快
我也尝试过调整一些GC和内存的东西,因为在那之前我有很多GC和CPU的使用率,当数据量更小,波形中有非常小的iowait时
如何提高Cassandra的性能。您的建议将不胜感激。看,Cassandra是相对依赖于I/O的。EC实例在设计上有“不足”的I/O(Xen虚拟化) 我的第一个建议是在真正的硬件上使用Cassandra,在那里你有一个控件。例如,你可以使用SSD磁盘进行CommitLog。看 然而,切换到自己的硬件是一个有点激进的选择 Amazon弹性块存储(EBS)提供块级存储卷 用于Amazon EC2实例。Amazon EBS卷 网络连接,并独立于服务器的生命周期保持 例如,Amazon EBS提供高可用性、高可靠性、, 可连接到运行中的Amazon的可预测存储卷 EC2实例,并作为实例中的设备公开。Amazon EBS 特别适合于需要数据库、文件和 系统,或访问原始块级存储。 Amazon EBS允许您创建1 GB到1 TB的存储卷,这些存储卷可以作为设备由Amazon EC2实例装载。多个卷可以装载到同一个实例。Amazon EBS允许您通过选择已配置的IOPS卷来配置特定级别的I/O性能(如果需要)。这允许您可预测地扩展到1000个每个Amazon EC2实例的IOPS数
还可以查看简短回答:行缓存和键缓存 如果您的数据包含像大多数系统一样经常读取的子集,请尝试使用行缓存和键缓存 行缓存是一种内存缓存,它将频繁读取的行完全存储在内存中。请记住,如果数据分散,这可能不会产生预期效果 密钥缓存通常更适合,因为它只在磁盘上存储分区密钥及其偏移量。这通常有助于跳过Cassandra的查找(无需使用分区索引和分区摘要) 尝试使用键空间和表启用键缓存,并检查您的性能。