Exemple #1
0
 def test_high_pending_mutations(self):
     """verify StageAnalyzer makes recs on high pending local writes"""
     analyzer = recs.Engine(None, None)
     stage = recs.Stage(
         name="MutationStage",
         pending=10001,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=0,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "lower memtable_cleanup_threshold in cassandra.yaml")
     self.assertEqual(reason, "mutations pending over 10000")
     stage.pending = 9999
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #2
0
 def test_memtable_flush_writer_pending(self):
     """verify flush writer pending"""
     analyzer = recs.Engine()
     stage = recs.Stage(
         name="MemtableFlushWriter",
         pending=6,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=0,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "raise memtable_flush_writers in cassandra.yaml")
     self.assertEqual(reason, "memtable flush writers pending over 5")
     stage.pending = 0
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #3
0
 def test_memtable_flush_writer_blocked(self):
     """verify flush writer blocked"""
     analyzer = recs.Engine(None, None)
     stage = recs.Stage(
         name="MemtableFlushWriter",
         pending=0,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=1,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "lower memtable_cleanup_threshold in cassandra.yaml")
     self.assertEqual(reason, "memtable flush writers blocked greater than zero")
     stage.blocked = 0
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #4
0
 def test_high_pending_write_remote(self):
     """verify StageAnalyzer makes recs on high pending writes"""
     analyzer = recs.Engine(None, None)
     stage = recs.Stage(
         name="TPC/all/WRITE_REMOTE",
         pending=10001,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=0,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "lower memtable_cleanup_threshold in cassandra.yaml")
     self.assertEqual(reason, "pending remote writes over 10000")
     stage.pending = 9999
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #5
0
 def test_full_memtable(self):
     """verify StageAnalyzer"""
     analyzer = recs.Engine(None, None)
     stage = recs.Stage(
         name="TPC/all/WRITE_MEMTABLE_FULL",
         pending=0,
         active=1,
         local_backpressure=0,
         completed=0,
         blocked=0,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "lower memtable_cleanup_threshold in cassandra.yaml")
     self.assertEqual(reason, "full memtable")
     stage.active = 0
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #6
0
 def test_compactions_behind(self):
     """verify compactions analysis"""
     analyzer = recs.Engine(None, None)
     stage = recs.Stage(
         name="CompactionManger",
         pending=101,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=0,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(rec, "raise compaction_throughput_in_mb in cassandra.yaml")
     self.assertEqual(reason, "more than 100 compactions behind")
     stage.pending = 0
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)
Exemple #7
0
def test_high_pending_mutations():
    """verify StageAnalyzer makes recs on high pending local writes"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="MutationStage",
        pending=10001,
        active=0,
        local_backpressure=0,
        completed=0,
        blocked=0,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "lower memtable_cleanup_threshold in cassandra.yaml"
    assert reason == "mutations pending over 10000"
    stage.pending = 9999
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #8
0
def test_memtable_flush_writer_blocked():
    """verify flush writer blocked"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="MemtableFlushWriter",
        pending=0,
        active=0,
        local_backpressure=0,
        completed=0,
        blocked=1,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "lower memtable_cleanup_threshold in cassandra.yaml"
    assert reason == "memtable flush writers blocked greater than zero"
    stage.blocked = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #9
0
def test_memtable_flush_writer_pending():
    """verify flush writer pending"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="MemtableFlushWriter",
        pending=6,
        active=0,
        local_backpressure=0,
        completed=0,
        blocked=0,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "raise memtable_flush_writers in cassandra.yaml"
    assert reason == "memtable flush writers pending over 5"
    stage.pending = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #10
0
def test_compactions_behind():
    """verify compactions analysis"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="CompactionManger",
        pending=101,
        active=0,
        local_backpressure=0,
        completed=0,
        blocked=0,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "raise compaction_throughput_in_mb in cassandra.yaml"
    assert reason == "more than 100 compactions behind"
    stage.pending = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #11
0
def test_full_memtable_completed():
    """verify full memtable historically completed"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="TPC/all/WRITE_MEMTABLE_FULL",
        pending=0,
        active=0,
        local_backpressure=0,
        completed=1,
        blocked=0,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "lower memtable_cleanup_threshold in cassandra.yaml"
    assert reason == "full memtable stages previously completed is too high"
    stage.completed = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #12
0
def test_ntr_all_time_blocked():
    """verify ntr blocked"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="Native-Transport-Requests",
        pending=0,
        active=0,
        local_backpressure=0,
        completed=0,
        blocked=0,
        all_time_blocked=101,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "raise or set -Dcassandra.max_queued_native_transport_requests= " + \
                            "(valid range is 1024-8192)"
    assert reason == "more than 100 blocked NTR all time"
    stage.all_time_blocked = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #13
0
def test_tpc_backpressure():
    """verify StageAnalyzer makes recs on any backpressure"""
    analyzer = recs.Engine()
    stage = recs.Stage(
        name="TPC/2",
        pending=1,
        active=0,
        local_backpressure=1,
        completed=0,
        blocked=0,
        all_time_blocked=0,
    )
    reason, rec = analyzer.analyze_stage(stage)
    assert rec == "raise or set tpc_concurrent_requests_limit in " + \
                            "cassandra.yaml (default is 128), if CPU is underutilized."
    assert reason == "local backpressure is present"
    stage.pending = 0
    stage.local_backpressure = 0
    reason, rec = analyzer.analyze_stage(stage)
    assert not rec
    assert not reason
Exemple #14
0
 def test_ntr_blocked(self):
     """verify ntr blocked"""
     analyzer = recs.Engine()
     stage = recs.Stage(
         name="Native-Transport-Requests",
         pending=0,
         active=0,
         local_backpressure=0,
         completed=0,
         blocked=11,
         all_time_blocked=0,
     )
     reason, rec = analyzer.analyze_stage(stage)
     self.assertEqual(
         rec,
         "raise or set -Dcassandra.max_queued_native_transport_requests= " +
         "(valid range is 1024-8192)",
     )
     self.assertEqual(reason, "blocked NTR over 10")
     stage.blocked = 0
     reason, rec = analyzer.analyze_stage(stage)
     self.assertIsNone(rec)
     self.assertIsNone(reason)