2017-11-29 8 views
0

매일 증분 수리를 예약했습니다. 그러나 수리가 진행되는 동안 우리의 모니터링 시스템은 COMPACTIONEXECUTOR_PENDING 작업을보고합니다.Cassandra 클러스터에서 압축이 진행되는 동안 수리가 실행되지 않도록 할 수 있습니까?

수리를 시작하기 전에 내가 수표를 소개 할 수 있다면, 압밀이 실행되고 있지 않은지, 궁금합니다.

nodetool netstats 및 compactionstats 명령 출력의 구문을 분석하여 압축이 실행 중인지 확인할 수 있어야합니다.

  1. nodetool netstats 출력은 어떤 스트림을 전송하지 포함 : 다음 검사 모두 통과하면

    나는 수리를 진행합니다.

  2. nodetool compactionstats 출력은 중인 작업을 포함 : 0

을하지만 난 계속하기 전에 일부 전문가의 의견을 얻을 싶어요.

내 이해가 정확합니까? 나는 이러한 수표가 항상 실패하고 수리 프로세스가 전혀 실행되지 않는 상황에 직면하고 싶지 않습니다.

감사합니다.

답변

0

Cassandra에서 압축이 규칙적으로 발생합니다. 따라서 pending_compactions = 0 일 때 수리를 트리거하는 것만으로는 수리가 충분하지 않을 수 있습니다. 하지만 트래픽에 따라 다릅니다 (예 : 쓰기가 거의 없다면 많은 압축을하지 않을 것입니다. pending_compactions = 0에 대한 최대 대기 시간을 추가하여 조건이 참이 아닌 경우 지정된 시간 후에 복구가 어쨌든 실행될 수 있도록해야합니다.

질문에 답변하십시오. Nodetool은 JMX를 사용하여 Cassandra에서 MBeans를 가져옵니다. 당신은 이런 식으로 자신의 JMX 클라이언트를 만들 수 있습니다

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

: How to connect to a java program on localhost jvm using JMX?

아니면 jmxterm 사용할 수 있습니다 https://github.com/jiaqi/jmxterm

내 이해를 http://cassandra.apache.org/doc/latest/operating/metrics.html 당신은이 MBean을 원하는 : 현재 사용 가능한 모든 MBean에 볼 수 있습니다 다음과 같이 사용할 수 있습니다 :

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