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

Cassandra 2.2.6中的高读写延迟

濮阳和泰
2023-03-14

大家好,已经有人问过类似的问题,但我想我们有点不同的问题:

我们使用Cassandra 2.2.6一个节点安装(并将升级到最新的)。现在我们有可怕的查询时间,有时会写超时。

    Read Count: 21554802
    Read Latency: 10.702975718589295 ms.
    Write Count: 19437551
    Write Latency: 27.806026818707767 ms.
    Pending Flushes: 0
            Table: -----
            SSTable count: 5
            Space used (live): 661310370
            Space used (total): 661310370
            Space used by snapshots (total): 704698632
            Off heap memory used (total): 845494
            SSTable Compression Ratio: 0.13491738106721324
            Number of keys (estimate): 179623
            Memtable cell count: 594836
            Memtable data size: 8816212
            Memtable off heap memory used: 0
            Memtable switch count: 3343
            Local read count: 21554802
            Local read latency: 11,744 ms
            Local write count: 19437551
            Local write latency: 30,506 ms
            Pending flushes: 0
            Bloom filter false positives: 387
            Bloom filter false ratio: 0,00024
            Bloom filter space used: 258368
            Bloom filter off heap memory used: 258328
            Index summary off heap memory used: 34830
            Compression metadata off heap memory used: 552336
            Compacted partition minimum bytes: 180
            Compacted partition maximum bytes: 12108970
            Compacted partition mean bytes: 23949
            Average live cells per slice (last five minutes): 906.8858219156                                                       92
            Maximum live cells per slice (last five minutes): 182785
            Average tombstones per slice (last five minutes): 1.432102507830                                                       9697
            Maximum tombstones per slice (last five minutes): 50

为了进行比较,有一个不同的表包含大约10万条记录,其构造与上述非常相似

    Read Count: 815780599
    Read Latency: 0.1672932019580917 ms.
    Write Count: 3083462
    Write Latency: 1.5470194706469547 ms.
    Pending Flushes: 0
            Table: ------
            SSTable count: 9
            Space used (live): 5067447115
            Space used (total): 5067447115
            Space used by snapshots (total): 31810631860
            Off heap memory used (total): 19603932
            SSTable Compression Ratio: 0.2952622065160448
            Number of keys (estimate): 12020796
            Memtable cell count: 300611
            Memtable data size: 18020553
            Memtable off heap memory used: 0
            Memtable switch count: 97
            Local read count: 815780599
            Local read latency: 0,184 ms
            Local write count: 3083462
            Local write latency: 1,692 ms
            Pending flushes: 0
            Bloom filter false positives: 7
            Bloom filter false ratio: 0,00000
            Bloom filter space used: 15103552
            Bloom filter off heap memory used: 15103480
            Index summary off heap memory used: 2631412
            Compression metadata off heap memory used: 1869040
            Compacted partition minimum bytes: 925
            Compacted partition maximum bytes: 1916
            Compacted partition mean bytes: 1438
            Average live cells per slice (last five minutes): 1.0
            Maximum live cells per slice (last five minutes): 1
            Average tombstones per slice (last five minutes): 1.0193396020053622
            Maximum tombstones per slice (last five minutes): 3

区别在于第一个包含大量地图和UDT。在dev center中进行简单测试选择*from。。。限制999;(省略任何Lucene索引等)最后一个显示183ms,第一个显示1.8s。

有人能帮我们找到病根吗?

共有1个答案

吕博耘
2023-03-14

每片最大活细胞数(过去五分钟):182785

这是巨大的,可能来自你的地图和UDT。您的数据模型很可能是根本原因。通过活的180k单元格来满足单个查询将非常缓慢。

从...限制999中选择*;

范围查询本来就很慢。试着设计你的表,这样你就可以从一个分区回答你的问题,你会得到更好的结果。

单节点安装

每当有一个GC,你会有一个坏的查询,这是通过增加更多的节点,这样暂停不会伤害坏(甚至更好,如果使用客户端推测重试驱动程序)。

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

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

  • 问题内容: 下面的Go代码读取10,000条记录的CSV(时间戳和浮点数),对数据进行一些操作,然后将原始值以及的附加列写入到另一个CSV中。但是,它的运行速度非常慢(例如,数小时,但大部分时间是),我很好奇我可以处理的CSV读取/写入是否效率低下。 我正在寻求帮助,以使此CSV读/写模板代码尽快。对于此问题的范围,我们不必担心该方法。 问题答案: 您先将文件加载到内存中,然后再对其进行处理,这对

  • 我在一个公认的缓慢配置中设置了Kafka——但我不期待我看到的数字。 我将集群设置为<code>LogAppendTime</code>,因此我正在测量事件写入Kafka(由代理决定)与服务接收到事件之间的时间。代理和应用程序都位于“同一位置”,因此服务器之间的ping时间很短,时钟应该同步或接近。 我看到延迟在 到 600ms 之间,很多是 ......巨大的差异让我觉得我的设置出了问题。它因消

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

  • 我不熟悉ApacheStorm和kafka,作为POC的一部分,我正在尝试使用kafka和ApacheStorm处理消息流。我使用的是暴风Kafka的来源https://github.com/apache/storm/tree/master/external/storm-kafka,我能够创建一个示例程序,该程序使用KafkaSpout读取来自kafka主题的消息,并将其输出到另一个kafka主题