【发布时间】: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 运气好?也许我误解了这个调度程序的使用。
【问题讨论】:
-
我认为这对你没有帮助。限制您的实例绝不是一个好主意。您应该更好地对数据进行分区并限制来自客户端的扫描查询。确保您没有使用行缓存等。还要检查墓碑。不要解决基本问题,随着应用程序的增长,这不会变得更容易。通过查看您的问题,您似乎知道自己的方法足以检查这些东西。