当前位置: 首页 > 知识库问答 >
问题:

Cassandra原型,延迟问题

鄢英毅
2023-03-14

我们正在尝试为Cassandra Datastax社区版和java驱动程序创建一个原型。我试图使用CassandraJava驱动程序(简单键空间)的示例来测量简单检索和更新的延迟。

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

为了优化检索/更新操作,我将key_cache_size_in_mb配置为10。

总之,我们尝试调整示例操作,以获得读取/更新操作的大约 5 毫秒延迟。

遵循我们设法实现的延迟:

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

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

更新simplex.playlist经过14毫秒来更新歌曲表。

检索歌曲表经过14毫秒。

标题专辑艺术家标签
La Pete Tonkinoise'拜拜黑鸟'Josphine Baker

为了提高性能并实现比上述更好的延迟,应该做哪些调整?

您的方向/见解将不胜感激。

事先谢谢你,欧文

共有1个答案

周越泽
2023-03-14

节点数量越多,分布越好,C*的性能也越好

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

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

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

在相同卷上提交日志数据目录–避免这种情况。写操作的最大性能提升是将提交日志放在单独的磁盘驱动器中。提交日志是100%顺序的,而从数据目录中读取数据是随机的。提交日志之间的I/O争用

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

堆调优

-Xms${MAX_HEAP_SIZE} -Xmx${MAX_HEAP_SIZE} – 默认为可用物理内存的 40-50% – 4 GB -Xmn${HEAP_NEWSIZE} - 默认为 25% 的 Java 堆 – 1GB

GC调优

-XX:useconkmarksweepgc-XX:CMS parallelremarkenabled-XX:UseParallelGC-XX:survivor ratio = 4-XX:MaxTenuringThreshold = 0

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

请谨慎使用密钥缓存,因为它仅存储密钥和数据位置,因此它以最小的内存占用量获得最高的性能提升。保存一个文件 I/O 查找。更新keys_cached=50000的列族my_column_family;

Linux,您可以找到cassandra.sh,它用于启动Cassandra进程。这是我们添加GC参数和JVM内存设置的地方。(先备份文件)我假设,您有4GB的内存分配给cassandra进程。假设您有8GB的系统内存,分配-Xmx4096m给Cassandra进程。

https://github . com/Apache/Cassandra/blob/trunk/conf/Cassandra-env . sh?来源=抄送

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

key _ cache _ size _ in _ MB——这个设置可以在cassandra.yaml文件中找到,适用于您的keyspace中的所有列族,或者在CF级别设置。你需要知道你的行的大概大小,并计算出来。例如,对于要缓存的100万行,平均行大小为100字节,25列,每列4字节,您需要将其设置为100 mb (1 mn * 100字节)

 类似资料:
  • 我正在开发Azure Managed Cassandra,目前正在观察从一个分区读取数据时的读取性能问题。卡珊德拉密钥空间 在一个RF为3的数据中心中使用SimpleStrategy创建了密钥空间。下面是表格说明: 对于单分区查询,响应时间大约为300到400毫秒。 我启用了跟踪来检查系统跟踪,下面是观察结果 对于上述项目 ID(1001),我们有 2000 条记录。 当我们将RF指定为3时,为什

  • 我把来自https://bitnami.com/stack/cassandra的卡珊德拉安装在云机器上。我克隆了这台机器,所以我有2台机器。一个运行cassandra服务器(1节点cassandra集群),另一个充当客户端并向第一个服务器发出查询。 我使用YCSB-https://github.com/brianfrankcooper/YCSB来执行基准测试。我观察到服务器上的读取延迟非常低,只有

  • 我正面临着G1GC算法中GC停顿的持续增加。服务延迟随着时间的推移继续增长。一旦发生这种情况,我将重新启动服务,延迟时间将恢复正常。启动后,等待时间再次随着时间的推移而增加。

  • 我正在使用Cassandra 2.2并使用可插拔指标将Cassandra指标发送到Graphite, > 我在组织.apache.cassandra.metrics.Column家庭中搜索过,看到在“排量”和“读数总计”中都有一个属性“计数”,这两个计数属性之间有什么区别? 我的主要目标是获得每次读/写的延迟,您如何建议我获得它? 谢谢!

  • 我在一个由三台机器组成的集群上使用cassandra 2.1.12,每台机器都有32 GB的RAM和4个内核(在Amazon AWS上) 我使用的是cassandra的所有默认配置。 我用它来进行我的网站事件分析(时间序列数据),每天的数据约为1 GB,复制因子为3。 我的数据在每台机器上已经增长到85 GB左右,现在它的读取延迟约为 我的行很少更新,所以,我没有使用Levelorder Comp

  • 大家好,已经有人问过类似的问题,但我想我们有点不同的问题: 我们使用Cassandra 2.2.6一个节点安装(并将升级到最新的)。现在我们有可怕的查询时间,有时会写超时。 为了进行比较,有一个不同的表包含大约10万条记录,其构造与上述非常相似 区别在于第一个包含大量地图和UDT。在dev center中进行简单测试选择*from。。。限制999;(省略任何Lucene索引等)最后一个显示183m