单个节点上的Cassandra读取重载

单个节点上的Cassandra读取重载,cassandra,Cassandra,几个星期以来,我们在cassandra 2.1.8集群上有一个无法理解的重载节点。ReadStage线程池通常已满,此节点上有许多已丢弃的任务,只有此任务。 该节点接收的全局负载是其他节点负载的两倍。 它是一个9节点集群,RF为3 告密者是网络拓扑,但拓扑文件是默认的。因此,所有节点都被视为位于同一机架和同一数据中心中 当我们选择此节点上承载的单个数据,并尝试多次从cqlsh中选择它时(使用consistency one),需要从重载节点中以90%的比例选择数据(参见跟踪上的)。即使数据也托管在

几个星期以来,我们在cassandra 2.1.8集群上有一个无法理解的重载节点。ReadStage线程池通常已满,此节点上有许多已丢弃的任务,只有此任务。
该节点接收的全局负载是其他节点负载的两倍。
它是一个9节点集群,RF为3

告密者是网络拓扑,但拓扑文件是默认的。因此,所有节点都被视为位于同一机架和同一数据中心中

当我们选择此节点上承载的单个数据,并尝试多次从cqlsh中选择它时(使用
consistency one
),需要从重载节点中以90%的比例选择数据(参见
跟踪上的
)。即使数据也托管在通过cqlsh连接到的节点上,也会发生这种情况。
我们尝试将节点隔离在拓扑中的特定机架中,但没有改变任何内容

节点已被删除(停用)并再次添加。 本周末又添加了一个节点(以前集群中只有8个节点)。
但重载节点没有任何变化。
新节点的协调器也更喜欢重载节点

问题只出现在读取请求上。
突变没有任何问题

什么可以解释这一点?
除了告密者之外,协调人还有什么可以选择它将请求哪个节点的吗?
我们能做些什么来解决这个问题

谢谢你的建议

编辑:

这个问题在几张桌子上提出。但是,作为信息,这是我们进行测试的表的描述:

CREATE TABLE main.app (
  id uuid PRIMARY KEY,
  acc uuid,
  apdex_f int,
  apdex_t int,
  cnx uuid,
  iid bigint,
  name text,
  prod boolean,
  sla_active boolean,
  st ascii,
  techno text,
  tz ascii
) WITH bloom_filter_fp_chance = 0.01
  AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
  AND comment = ''
  AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
  AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
  AND dclocal_read_repair_chance = 0.1
  AND default_time_to_live = 0
  AND gc_grace_seconds = 864000
  AND max_index_interval = 2048
  AND memtable_flush_period_in_ms = 0
  AND min_index_interval = 128
  AND read_repair_chance = 0.0
  AND speculative_retry = '99.0PERCENTILE';
这是经过测试的查询:

SELECT name from app where id = 630bbc5e-387a-424a-a8a3-e4948ec7470a;
这是跟踪(我刚刚执行了10次,结果几乎与此相同)

该数据存在于我连接到的节点上(172.16.0.1)


我刚刚注意到另一件奇怪的事情:新节点(上周末添加的)已经比重载节点保存了更多的数据(3.5倍),即使它在将近10天后被添加到集群中。

您使用的查询和/或模式是什么?我最初的想法是,在这个节点上要么有很多墓碑,要么有一个非常大的分区。如果你看一下追踪,它会告诉你有很多墓碑。如果没有,请检查该节点上的系统日志并搜索“大分区”-如果有大分区,它将显示在那里,并且还应为您提供分区ID。跟踪中不会出现墓碑。测试请求是在一个非常小的CF上,我用完整的表描述编辑了消息。事实上我错了。有墓碑。我在问题上添加了线索。无论如何,我不明白为什么协调器的行为会依赖于墓碑。感谢您添加更多信息-肯定不是一个大的分区问题,因为您甚至没有使用集群列。从.8到.1发送请求的时间间隔为70毫秒,这可能有很多原因——GC暂停、大数据负载、网络/硬件问题……如果您在这些服务器上运行其他进程/应用程序,也可能会产生干扰。system.log中有什么突出的地方吗?警告、错误、GC消息?谢谢您的回答。.8节点位于专用服务器上,是一台物理机器。cassandra进程单独使用8个CPU核。gc日志处于活动状态,很少有gc暂停。延迟是过载的结果:ReadStage线程池通常已满(32),有时多达数千个挂起的任务。我不明白的是,为什么协调员90%的时间都在请求这个节点,而这个数据在另外两个节点上。您使用的查询和/或模式是什么?我最初的想法是,在这个节点上要么有很多墓碑,要么有一个非常大的分区。如果你看一下追踪,它会告诉你有很多墓碑。如果没有,请检查该节点上的系统日志并搜索“大分区”-如果有大分区,它将显示在那里,并且还应为您提供分区ID。跟踪中不会出现墓碑。测试请求是在一个非常小的CF上,我用完整的表描述编辑了消息。事实上我错了。有墓碑。我在问题上添加了线索。无论如何,我不明白为什么协调器的行为会依赖于墓碑。感谢您添加更多信息-肯定不是一个大的分区问题,因为您甚至没有使用集群列。从.8到.1发送请求的时间间隔为70毫秒,这可能有很多原因——GC暂停、大数据负载、网络/硬件问题……如果您在这些服务器上运行其他进程/应用程序,也可能会产生干扰。system.log中有什么突出的地方吗?警告、错误、GC消息?谢谢您的回答。.8节点位于专用服务器上,是一台物理机器。cassandra进程单独使用8个CPU核。gc日志处于活动状态,很少有gc暂停。延迟是过载的结果:ReadStage线程池通常已满(32),有时多达数千个挂起的任务。我不明白的是,为什么协调员90%的时间都在请求这个节点,而这个数据在另外两个节点上。
 activity                                                                                            | timestamp                  | source     | source_elapsed
-----------------------------------------------------------------------------------------------------+----------------------------+------------+----------------
                                                                                  Execute CQL3 query | 2015-11-02 19:03:19.866000 | 172.16.0.1 |              0
 Parsing SELECT name from app where id = 630bbc5e-387a-424a-a8a3-e4948ec7470a; [SharedPool-Worker-7] | 2015-11-02 19:03:19.867000 | 172.16.0.1 |             36
                                                           Preparing statement [SharedPool-Worker-7] | 2015-11-02 19:03:19.867000 | 172.16.0.1 |            135
                                                 reading data from /172.16.0.8 [SharedPool-Worker-7] | 2015-11-02 19:03:19.868000 | 172.16.0.1 |            354
                         Sending READ message to /172.16.0.8 [MessagingService-Outgoing-/172.16.0.8] | 2015-11-02 19:03:19.868000 | 172.16.0.1 |            394
                      READ message received from /172.16.0.1 [MessagingService-Incoming-/172.16.0.1] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |             43
                                      Executing single-partition query on app [SharedPool-Worker-18] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |            479
                                                 Acquiring sstable references [SharedPool-Worker-18] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |            500
                                                  Merging memtable tombstones [SharedPool-Worker-18] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |            518
                                                  Key cache hit for sstable 5 [SharedPool-Worker-18] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |            544
                                  Seeking to partition beginning in data file [SharedPool-Worker-18] | 2015-11-02 19:03:19.935000 | 172.16.0.8 |            560
    Skipped 0/1 non-slice-intersecting sstables, included 0 due to tombstones [SharedPool-Worker-18] | 2015-11-02 19:03:19.936000 | 172.16.0.8 |            747
                                   Merging data from memtables and 1 sstables [SharedPool-Worker-18] | 2015-11-02 19:03:19.936000 | 172.16.0.8 |            772
                                            Read 1 live and 0 tombstone cells [SharedPool-Worker-18] | 2015-11-02 19:03:19.936000 | 172.16.0.8 |            808
                                            Enqueuing response to /172.16.0.1 [SharedPool-Worker-18] | 2015-11-02 19:03:19.936000 | 172.16.0.8 |            873
             Sending REQUEST_RESPONSE message to /172.16.0.1 [MessagingService-Outgoing-/172.16.0.1] | 2015-11-02 19:03:19.936000 | 172.16.0.8 |           1119
          REQUEST_RESPONSE message received from /172.16.0.8 [MessagingService-Incoming-/172.16.0.8] | 2015-11-02 19:03:19.937000 | 172.16.0.1 |          70396
                                         Processing response from /172.16.0.8 [SharedPool-Worker-11] | 2015-11-02 19:03:19.937000 | 172.16.0.1 |          70431
                                                                                    Request complete | 2015-11-02 19:03:19.936484 | 172.16.0.1 |          70484