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

Cassandra读取延迟问题

滕星纬
2023-03-14

我正在开发Azure Managed Cassandra,目前正在观察从一个分区读取数据时的读取性能问题。卡珊德拉密钥空间

在一个RF为3的数据中心中使用SimpleStrategy创建了密钥空间。下面是表格说明:

CREATE TABLE ks1.table1 (
item text,
market text,
location int,
brand text,
channel text,
qty1 int,
locationtype text,
nonsellableqty int,
qty2 int,
qty3 int,
qty3 int,
refitem text,
reflocation int,
rtvqty int,
soh int,
tsfexpectedqty int,
tsfreservedqty int,
PRIMARY KEY (item, market, location) ) WITH CLUSTERING ORDER BY (market ASC, location ASC)
AND bloom_filter_fp_chance = 0.1
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'SizeTieredCompactionStrategy'} ;
  Query is  select * from table1 where item='1001';

对于单分区查询,响应时间大约为300到400毫秒。

我启用了跟踪来检查系统跟踪,下面是观察结果

   session_id                           | event_id                             | activity                                                                  | source        | source_elapsed | source_port | thread
--------------------------------------+--------------------------------------+---------------------------------------------------------------------------+---------------+----------------+-------------+------------------------------------------------
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f060-7756-11ec-bf3a-35d288fe166a |                                         reading digest from /host3 | host1 |                  209 |        null |                    Native-Transport-Requests-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f061-7756-11ec-bf3a-35d288fe166a |                                 Executing single-partition query on roles | host1 |            241 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f062-7756-11ec-bf3a-35d288fe166a |                                              Acquiring sstable references | host1 |            269 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f063-7756-11ec-bf3a-35d288fe166a | Skipped 0/2 non-slice-intersecting sstables, included 0 due to tombstones | host1 |            294 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f064-7756-11ec-bf3a-35d288fe166a |                                               Key cache hit for sstable 1 | host1 |            329 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f065-7756-11ec-bf3a-35d288fe166a |                                     Sending READ message to /host3 | host1 |                   330 |        null |  MessagingService-Outgoing-/host3-Small
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f066-7756-11ec-bf3a-35d288fe166a |                                               Key cache hit for sstable 2 | host1 |            373 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f067-7756-11ec-bf3a-35d288fe166a |                                 Merged data from memtables and 2 sstables | host1 |            425 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb20f068-7756-11ec-bf3a-35d288fe166a |                                    Read 1 live rows and 0 tombstone cells | host1 |            446 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211770-7756-11ec-a029-857a112314fb |                                 READ message received from /host1 |  host3 |                     2 |        null |       MessagingService-Incoming-/host1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211770-7756-11ec-bf3a-35d288fe166a |                      REQUEST_RESPONSE message received from /host3 | host1 |                  1247 |        null |        MessagingService-Incoming-/host3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211771-7756-11ec-a029-857a112314fb |                                 Executing single-partition query on roles |  host2 |             71 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211771-7756-11ec-bf3a-35d288fe166a |                                    Processing response from /host2 | host1 |                  1316 |        null |                         RequestResponseStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211772-7756-11ec-a029-857a112314fb |                                              Acquiring sstable references |  host2 |             96 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211772-7756-11ec-bf3a-35d288fe166a |                                        reading digest from /host4 | host1 |                    1426 |        null |                    Native-Transport-Requests-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211773-7756-11ec-a029-857a112314fb | Skipped 0/2 non-slice-intersecting sstables, included 0 due to tombstones |  host2 |            117 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211773-7756-11ec-bf3a-35d288fe166a |                    Executing single-partition query on table1 | host1 |           1441 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211774-7756-11ec-a029-857a112314fb |                                               Key cache hit for sstable 1 |  host2 |            144 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211774-7756-11ec-bf3a-35d288fe166a |                                              Acquiring sstable references | host1 |           1449 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211775-7756-11ec-a029-857a112314fb |                                               Key cache hit for sstable 2 |  host2 |            172 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211775-7756-11ec-bf3a-35d288fe166a |                                   speculating read retry on /host2 | host1 |                   1453 |        null |                    Native-Transport-Requests-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211776-7756-11ec-a029-857a112314fb |                                 Merged data from memtables and 2 sstables |  host2 |            225 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211776-7756-11ec-bf3a-35d288fe166a |                                               Key cache hit for sstable 2 | host1 |           1467 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211777-7756-11ec-a029-857a112314fb |                                    Read 1 live rows and 0 tombstone cells |  host2 |            244 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211777-7756-11ec-bf3a-35d288fe166a |                                               Key cache hit for sstable 1 | host1 |           1481 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211778-7756-11ec-a029-857a112314fb |                                      Enqueuing response to /host1 |  host2 |                  250 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211778-7756-11ec-bf3a-35d288fe166a | Skipped 0/2 non-slice-intersecting sstables, included 0 due to tombstones | host1 |           1490 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211779-7756-11ec-a029-857a112314fb |                        Sending REQUEST_RESPONSE message to /host1 |  host2 |                  375 |        null | MessagingService-Outgoing-/host1-Small
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb211779-7756-11ec-bf3a-35d288fe166a |                                     Sending READ message to /host2 | host1 |                  1495 |        null |  MessagingService-Outgoing-/host2-Small
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb21177a-7756-11ec-bf3a-35d288fe166a |                                    Sending READ message to /host4 | host1 |           1501 |        null | MessagingService-Outgoing-/host4-Small
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb21177b-7756-11ec-bf3a-35d288fe166a |                                 Merged data from memtables and 2 sstables | host1 |           1603 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb21177c-7756-11ec-bf3a-35d288fe166a |                                    Read 2 live rows and 2 tombstone cells | host1 |           1622 |        null |                                    ReadStage-3
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e80-7756-11ec-a029-857a112314fb |                                 READ message received from /host1 |  host2 |              1 |        null |       MessagingService-Incoming-/host1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e80-7756-11ec-a9d1-87a6d519c8de |                                 READ message received from /host1 | host4 |              6 |        null |       MessagingService-Incoming-/host1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e80-7756-11ec-bf3a-35d288fe166a |                     REQUEST_RESPONSE message received from /host4 | host1 |           2371 |        null |       MessagingService-Incoming-/host4
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e81-7756-11ec-a029-857a112314fb |                    Executing single-partition query on table1 |  host2 |            100 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e81-7756-11ec-bf3a-35d288fe166a |                                   Processing response from /host4 | host1 |           2437 |        null |                         RequestResponseStage-2
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb213e82-7756-11ec-a029-857a112314fb |                                              Acquiring sstable references |  host2 |            117 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216590-7756-11ec-a029-857a112314fb |                        Partition index with 0 entries found for sstable 2 |  host2 |            665 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216590-7756-11ec-a9d1-87a6d519c8de |                    Executing single-partition query on table1 | host4 |            137 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216590-7756-11ec-bf3a-35d288fe166a |                      REQUEST_RESPONSE message received from /host2 | host1 |             39 |        null |        MessagingService-Incoming-/host2
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216591-7756-11ec-a029-857a112314fb |                                               Key cache hit for sstable 1 |  host2 |           1063 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216591-7756-11ec-a9d1-87a6d519c8de |                                              Acquiring sstable references | host4 |            171 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216591-7756-11ec-bf3a-35d288fe166a |                                    Processing response from /host2 | host1 |            129 |        null |                         RequestResponseStage-2
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216592-7756-11ec-a029-857a112314fb | Skipped 0/2 non-slice-intersecting sstables, included 0 due to tombstones |  host2 |           1087 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216592-7756-11ec-a9d1-87a6d519c8de |                                               Key cache hit for sstable 2 | host4 |            198 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216592-7756-11ec-bf3a-35d288fe166a |                                                    Initiating read-repair | host1 |            174 |        null |                         RequestResponseStage-2
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216593-7756-11ec-a029-857a112314fb |                                 Merged data from memtables and 2 sstables |  host2 |           1354 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216593-7756-11ec-a9d1-87a6d519c8de |                                               Key cache hit for sstable 1 | host4 |            228 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216594-7756-11ec-a029-857a112314fb |                                    Read 2 live rows and 2 tombstone cells |  host2 |           1386 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216594-7756-11ec-a9d1-87a6d519c8de | Skipped 0/2 non-slice-intersecting sstables, included 0 due to tombstones | host4 |            238 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216595-7756-11ec-a029-857a112314fb |                                      Enqueuing response to /host1 |  host2 |           1394 |        null |                                    ReadStage-1
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216595-7756-11ec-a9d1-87a6d519c8de |                                 Merged data from memtables and 2 sstables | host4 |            391 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216596-7756-11ec-a029-857a112314fb |                        Sending REQUEST_RESPONSE message to /host1 |  host2 |           1431 |        null | MessagingService-Outgoing-/host1-Small
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216596-7756-11ec-a9d1-87a6d519c8de |                                    Read 2 live rows and 2 tombstone cells | host4 |            415 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216597-7756-11ec-a9d1-87a6d519c8de |                                      Enqueuing response to /host1 | host4 |            423 |        null |                                    ReadStage-8
 eb20c950-7756-11ec-bf3a-35d288fe166a | eb216598-7756-11ec-a9d1-87a6d519c8de |                        Sending REQUEST_RESPONSE message to /host1 | host4 |            499 |        null | MessagingService-Outgoing-/host1-Small

对于上述项目 ID(1001),我们有 2000 条记录。

当我们将RF指定为3时,为什么要对超过3台主机执行查询?我们期望在20毫秒内收到查询响应。请告诉我配置有什么问题吗?或者如何调整设置以达到亚毫秒的响应时间。

共有1个答案

嵇星海
2023-03-14

根据驱动程序设置-如果选择的协调器不是具有副本的节点之一,则至少需要2个其他节点被命中,因此可能导致3个节点在跟踪范围内,1个协调器,2个副本。

但是,还有其他 2 件事导致节点计数不仅仅是 3。

启动读取修复

如果检测到两个副本之间的不匹配,它将同步修复所有副本之间的数据,这本身将导致响应延迟。这将导致您看到的场景中有4个节点(协调器3个副本)被联系。

推测/host2上的读取重试

查询花费的时间足够长,因此已从驱动程序重新发出查询。这再次可能导致它将查询发送到另一个协调器,然后该协调器可以涉及不同的节点来回答查询。

问题的最后一部分是关于性能——这比较棘手。确保数据得到修复并避免摘要不匹配当然会有所帮助,但是在跟踪(可能只是测试数据)中,我们可以看到存在2个活动记录和2个逻辑删除。墓碑的存在对性能没有帮助,而且从表面上看,数据是从多个表中读取的。需要更多关于使用模式的信息来了解要优化的选项,但是如果出现大量的删除/更新,使用STCS将会导致问题。

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

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

  • 我们正在尝试为Cassandra Datastax社区版和java驱动程序创建一个原型。我试图使用CassandraJava驱动程序(简单键空间)的示例来测量简单检索和更新的延迟。 我有两个数据中心,每个数据中心有一个机架。每个机架包含3个节点。我总共有6个节点(虚拟机)。 为了优化检索/更新操作,我将key_cache_size_in_mb配置为10。 总之,我们尝试调整示例操作,以获得读取/更

  • 我们有一个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