Cassandra原型,延迟问题

Cassandra原型,延迟问题,cassandra,Cassandra,我们正在尝试创建Cassandra Datastax社区版和java驱动程序的原型。 我尝试使用Cassandra Java驱动程序(simplex keyspace)中的示例来测量简单检索和更新的延迟 我有两个数据中心,每个数据中心有一个机架。每个机架包含3个节点。 我总共有6个节点(VM) 我已经将key_cache_size_in_mb配置为10,以便优化检索/更新操作 总之,我们正在尝试调整示例操作,使读取/更新操作的延迟大约为5毫秒 在我们设法实现的延迟之后: 检索播放列表表花费了19

我们正在尝试创建Cassandra Datastax社区版和java驱动程序的原型。 我尝试使用Cassandra Java驱动程序(simplex keyspace)中的示例来测量简单检索和更新的延迟

我有两个数据中心,每个数据中心有一个机架。每个机架包含3个节点。 我总共有6个节点(VM)

我已经将key_cache_size_in_mb配置为10,以便优化检索/更新操作

总之,我们正在尝试调整示例操作,使读取/更新操作的延迟大约为5毫秒

在我们设法实现的延迟之后:

检索播放列表表花费了19毫秒

标题专辑艺术家
特纳表演公司备忘录米克·贾格尔

更新simplex.playlist 更新歌曲表花费了14毫秒

检索歌曲表花费了14毫秒

标题专辑艺术家标签
小Tonkinoise“再见,黑鸟”JosŽphine Baker

为了提高性能和获得比上述更好的延迟,应该进行哪些调整

非常感谢您的指导/见解

提前感谢,, Erwin

一些性能优化提示/最佳实践: 节点数越大,分布越好,C*的性能越好

64位JVM的性能优于32位(至少使用Oracle JVM 1.6 u22)

物理环境,最小值为8GB,但任何介于16-32GB之间的8核处理器

至少两个磁盘,一个用于提交日志,另一个用于数据目录

在相同卷上提交日志+数据目录–避免这种情况。写入的最大性能增益是将提交日志放在单独的磁盘驱动器中。提交日志是100%连续的,而从数据目录中随机读取数据。提交日志和SSTable之间的I/O争用可能会恶化提交日志写入和SSTable读取。但这不适用于SSD或EC2

JVM参数调整(在8GB RAM系统上)

堆优化

-Xms${MAX\u HEAP\u SIZE} -Xmx${MAX\u HEAP\u SIZE}–默认为可用物理内存的40-50%–4 GB -Xmn${HEAP\u NEWSIZE}-默认值为java堆的25%–1GB

GC调优

-XX:+UseConMarkSweepGC -XX:+cmsparallelremarketabled -XX:+UseParallelGC -XX:生存率=4 -XX:MaxTenuringThreshold=0

同步所有节点上的时钟–当C*在每个列值上添加时间戳t时,必须使用NTP守护进程或脚本跨环同步时钟。已知NTP会使时钟在数据中心间漂移

尽量少用密钥缓存,因为它只存储密钥和数据位置,所以具有尽可能高的性能增益和最少的内存占用。保存一个文件I/O搜索。 更新列族my_column_族,键_cached=50000

使用RF=3,这是一种最佳做法,写入/读取一致性级别=QUORUM是一种最佳做法 在Linux上,您可以找到cassandra.sh,它用于启动cassandra进程。这就是我们添加GC参数以及JVM内存设置的地方。(首先备份文件)我假设您为cassandra进程分配了4GB。假设您有8GB的系统内存,将-Xmx4096m分配给Cassandra进程

您可以选择“GC调优选项”部分中编码的调优选项


key_cache_size_in_mb-此设置可在cassandra.yaml文件中找到,并将适用于键空间中的所有列族或设置为CF级别的列族。您需要知道行的大致大小并进行计算。e、 g.对于要缓存的100万行,平均行大小为100字节,每行25列,每列4字节,您需要将其设置为100 mb(1 mn*100字节)

在运行此查询时,获取CQL 3模式、确切的CQL查询以及打开跟踪的结果将非常有用。