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

Cassandra和读取延迟

胡野
2023-03-14

我把来自https://bitnami.com/stack/cassandra的卡珊德拉安装在云机器上。我克隆了这台机器,所以我有2台机器。一个运行cassandra服务器(1节点cassandra集群),另一个充当客户端并向第一个服务器发出查询。

我使用YCSB-https://github.com/brianfrankcooper/YCSB来执行基准测试。我观察到服务器上的读取延迟非常低,只有几微秒(99%和MAX约为50/100 us),正如使用“nodetool cfhistogram”观察到的那样

但是使用 YCSB 基准测试从客户端(其他节点)观察到的端到端延迟很高 - 平均延迟 = 2000 us。所以我想知道为什么端到端延迟如此之高 2000 我们而不是 100 us(在服务器上)。此外,网络延迟也很低,约为 200 us(如使用 PING 所示)。我希望卡桑德拉服务器尽可能快速/即时地响应。有人可以帮忙吗?

共有1个答案

甄德寿
2023-03-14

因此,从cfhistograms开始测量本地读取延迟,这是唯一一次将memtables与sstables合并。这不包括协调,用于检查代理直方图。

即使这样,您也应该预料到与客户端时间的偏差。除了网络延迟之外,还有内核延迟和客户端反序列化时间。也不包括传入网络时间和服务器端cql反序列化。如果在此期间发生完整/YGC,它也可能不包括在C*延迟时间内(很容易达到1-500毫秒)。根据版本/配置,客户端还会进行一些请求合并(最多10us)。你可以很容易地在jvm上预期1毫秒的延迟,仅仅是为了达到ygc的安全点或撤销偏差(如果启用,取决于版本),如果这发生在我们记录请求的“开始时间”之前,则不包括在内。tcp网络上低于1毫秒的延迟确实会随着naggle(如果启用)和tcp窗口而变化,因此从icmp ping和实际的tcp往返时间来看,平均200微秒可能不一致。

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

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

  • 我们有一个20节点的Cassandra集群,运行大量读取请求(峰值约900k/sec)。我们的数据集相当小,所以所有内容都是直接从内存(OS页面缓存)提供的。我们的数据模型非常简单(只是一个键/值),所有读取都是在一致性级别1(RF 3)下执行的。 我们将JavaDatastax驱动程序与TokenAware策略一起使用,因此所有的读取都应该直接到达一个拥有请求数据的节点。 这些是从其中一个节点提

  • 我已经建立了一个具有3个节点的Cassandra。在客户端,我使用的是Datasatx java驱动程序,我的查询如下 正如我们在上面的查询中看到的,我希望最大的“cluster_column”小于10。我有宽行。所以当数据在行间增长时,读取延迟会增加。 我只使用密钥缓存和级别压缩策略。MemTable大小保持为2048 MB。 我可以调整什么参数来降低服务器级别的读取延迟。 请回复 提前感谢

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

  • 我正在用一个简单的模型测试卡桑德拉的性能。 我使用pycassa,get/xget函数()获取行键的100列。但在服务器上读取延迟约为15毫秒。 nodetool cfstats 这种类型的延迟是惊人的!当nodetool信息显示读取直接命中行缓存时。 谁能告诉我为什么cassandra在读取行缓存时要花这么多时间?