【问题标题】:Can I avoid running repair while compaction is going on in Cassandra cluster?我可以避免在 Cassandra 集群中进行压缩时运行修复吗?
【发布时间】:2018-05-12 19:00:50
【问题描述】:

我每天都安排增量维修。但是在修复过程中,我们的监控系统会报告 COMPACTIONEXECUTOR_PENDING 任务。

我想知道,在我触发修复之前,是否可以引入一个检查,以查看压缩是否未运行。

我应该能够通过解析 nodetool netstats 和 compactionstats 命令输出的输出来检查压缩是否正在运行。

如果以下两项检查均通过,我将继续进行维修:

  1. nodetool netstats 输出包含未发送任何流。
  2. nodetool compactionstats 输出包含 待定任务:0

但我想在继续之前获得一些专家意见。

我的理解正确吗? 我不想陷入这样的情况,即这些检查总是失败并且根本没有触发修复过程。

谢谢。

【问题讨论】:

    标签: cassandra-3.0


    【解决方案1】:

    在 Cassandra 中会定期进行压缩。所以我有点害怕只有在 pending_compactions=0 时触发修复会导致修复运行不够。但这当然取决于您的流量,例如如果你写的很少,你就不会做很多压缩。您可能应该为 pending_compactions=0 添加一个最大等待时间,以便在指定时间后,如果条件不正确,修复仍然会运行。

    回答你的问题。 Nodetool 使用 JMX 在 Cassandra 中获取 MBean。您可以在此处查看所有可用的 MBean:http://cassandra.apache.org/doc/latest/operating/metrics.html 你想要这个 MBean:

    org.apache.cassandra.metrics:type=Compaction name=PendingTasks
    

    您可以像这样创建自己的 JMX 客户端:How to connect to a java program on localhost jvm using JMX?

    或者你可以使用jmxterm:https://github.com/jiaqi/jmxterm

    我的理解是你可以这样使用它:

    java -jar jmxterm-1.0.0-uber.jar
    get -b org.apache.cassandra.metrics:type=Compaction name=PendingTasks
    

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多