【问题标题】:Cannot get RoundRobinScheduler to work in Cassandra无法让 RoundRobinScheduler 在 Cassandra 中工作
【发布时间】:2017-02-03 01:49:09
【问题描述】:

我正在使用 Cassandra 2.1.16。我需要限制对 Cassandra 中特定键空间的查询数量,因为应用程序正在为该键空间运行内存密集型查询。如果同时运行足够多的这些,Cassandra 将耗尽堆。

使用 RoundRobinScheduler 似乎是解决此问题的理想解决方案。所以我在 cassandra.yaml 中启用了它,并设置了 request_scheduler_options。因此,对于下面的示例,我希望对名为 mykeyspace 的键空间一次激活的查询不超过 2 个:

request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler
request_scheduler_options:
  throttle_limit: 80
  default_weight: 5
  weights: mykeyspace: 2
request_scheduler_id: keyspace

这不起作用并且没有效果。为了调试它,我下载了 Cassandra 源代码并将调试日志消息添加到 RoundRobinScheduler 类中的所有方法中。记录的唯一消息来自构造函数。运行查询时,我没有看到来自其他方法的日志消息。

有没有人使用 RoundRobinScheduler 运气好?也许我误解了这个调度程序的使用。

【问题讨论】:

  • 我认为这对你没有帮助。限制您的实例绝不是一个好主意。您应该更好地对数据进行分区并限制来自客户端的扫描查询。确保您没有使用行缓存等。还要检查墓碑。不要解决基本问题,随着应用程序的增长,这不会变得更容易。通过查看您的问题,您似乎知道自己的方法足以检查这些东西。

标签: cassandra cassandra-2.1


【解决方案1】:

我在查看 2.1.16 Cassandra 源代码时发现,这种查询速率限制机制仅适用于 Thrift 协议。它不适用于 CQL3 协议。当我通过 Cassandra 已弃用的 command-cli(这是原始 Thrift 解释器)运行查询时,我确实看到了我在 RoundRobinScheduler 类中检测到的调试消息。

我不知道这个查询速率限制机制是否已经适应了 CQL3。我的项目使用的是相对较旧的 2.1 版本。参数仍然包含在 3.9 版本中分发的 cassandra.yaml 中。有时间我得下载源代码自己看看。

【讨论】:

  • 您签入 3.9 版本了吗?如果您对此有任何疑问,请更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 2018-02-26
  • 2019-07-06
  • 2015-11-27
  • 2012-10-16
  • 2010-11-30
相关资源
最近更新 更多