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

Cassandra读取延迟高即使行缓存,为什么?

戚永福
2023-03-14

我正在用一个简单的模型测试卡桑德拉的性能。

CREATE TABLE "NoCache" (
  key ascii,
  column1 ascii,
  value ascii,
  PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE AND
  bloom_filter_fp_chance=0.010000 AND
  caching='ALL' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

我使用pycassa,get/xget函数()获取行键的100列。但在服务器上读取延迟约为15毫秒。

colums=COL_FAM.get(row_key, column_count=100)

nodetool cfstats

            Column Family: NoCache
            SSTable count: 1
            Space used (live): 103756053
            Space used (total): 103756053
            Number of Keys (estimate): 128
            Memtable Columns Count: 0
            Memtable Data Size: 0
            Memtable Switch Count: 0
            Read Count: 20
            Read Latency: 15.717 ms.
            Write Count: 0
            Write Latency: NaN ms.
            Pending Tasks: 0
            Bloom Filter False Positives: 0
            Bloom Filter False Ratio: 0.00000
            Bloom Filter Space Used: 976
            Compacted row minimum size: 4769
            Compacted row maximum size: 557074610
            Compacted row mean size: 87979499

这种类型的延迟是惊人的!当nodetool信息显示读取直接命中行缓存时。

Row Cache        : size 4834713 (bytes), capacity 67108864 (bytes), 35 hits, 38 requests, 1.000 recent hit rate, 0 save period in seconds

谁能告诉我为什么cassandra在读取行缓存时要花这么多时间?

共有1个答案

郜德容
2023-03-14

启用追踪看看它在做什么http://www.datastax.com/dev/blog/tracing-in-cassandra-1-2

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

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

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

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

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

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