2016-08-23 4 views
0

カッサンドラの自動コンパクションで奇妙な問題があります。私はDebian 8システムでcassandra 3.7を使用していますが、約70GBのデータをcassandraノード(テスト目的のためにRF = 1の単一ノード)に入れた後、コマンドラインIからnodetool compactionstatsを実行しています取得:コンパクション時にスタック

[email protected]:~# nodetool compactionstats 
pending tasks: 280 
- system.batches: 280 

他の情報は表示されません。 SYSTEM.LOGをチェック は私が取得:

ERROR [CompactionExecutor:74] 2016-08-23 19:41:30,006 CassandraDaemon.java:217 - Exception in thread Thread[CompactionExecutor:74,1,main] 
java.lang.AssertionError: null 
     at org.apache.cassandra.io.compress.CompressionMetadata$Chunk.<init>(CompressionMetadata.java:475) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.compress.CompressionMetadata.chunkFor(CompressionMetadata.java:240) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.MmappedRegions.updateState(MmappedRegions.java:158) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.MmappedRegions.<init>(MmappedRegions.java:73) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.MmappedRegions.<init>(MmappedRegions.java:61) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.MmappedRegions.map(MmappedRegions.java:99) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.CompressedSegmentedFile.<init>(CompressedSegmentedFile.java:44) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.CompressedSegmentedFile$Builder.complete(CompressedSegmentedFile.java:135) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.SegmentedFile$Builder.complete(SegmentedFile.java:181) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.util.SegmentedFile$Builder.buildData(SegmentedFile.java:192) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.sstable.format.big.BigTableWriter.openEarly(BigTableWriter.java:271) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.sstable.SSTableRewriter.maybeReopenEarly(SSTableRewriter.java:182) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.io.sstable.SSTableRewriter.append(SSTableRewriter.java:134) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.writers.DefaultCompactionWriter.realAppend(DefaultCompactionWriter.java:65) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.writers.CompactionAwareWriter.append(CompactionAwareWriter.java:141) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.CompactionTask.runMayThrow(CompactionTask.java:187) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:82) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:60) ~[apache-cassandra-3.7.jar:3.7] 
     at org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionCandidate.run(CompactionManager.java:264) ~[apache-cassandra-3.7.jar:3.7] 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_101] 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_101] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_101] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101] 
     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101] 
ERROR [Reference-Reaper:1] 2016-08-23 19:42:05,511 Ref.java:203 - LEAK DETECTED: a reference ([email protected]) to class [email protected]:/cassandra/disk1/system/batches-919a4bc57a333573b03e13fc3f68b465/mb-44056-big-Index.db was not released before the reference was garbage collected 
ERROR [Reference-Reaper:1] 2016-08-23 19:42:05,511 Ref.java:203 - LEAK DETECTED: a reference ([email protected]) to class [email protected]:[email protected][7fb261a66020..7fb261a69220) was not released before the reference was garbage collected 
ERROR [Reference-Reaper:1] 2016-08-23 19:42:05,511 Ref.java:203 - LEAK DETECTED: a reference ([email protected]) to class or[email protected]791904242:[[email protected][0..188), [email protected][0..f50)] was not released before the reference was garbage collected 
ERROR [Reference-Reaper:1] 2016-08-23 19:42:05,523 Ref.java:203 - LEAK DETECTED: a reference ([email protected]) to class [email protected]:/cassandra/disk1/system/batches-919a4bc57a333573b03e13fc3f68b465/mb-44056-big-Data.db was not released before the reference was garbage collected 

それはそのカサンドラが、その後少し後リファレンス・死神CompressionMetadataクラスのどこかにハングし、例外を取得し、私には思えますキャッチされない例外のためにメモリリークを検出します。しかし、これらのエラーは30秒ごとにログに表示され続けるため、問題は解消されません。

誰も以前にそのことを見たことがありますか?

ありがとうございました。

答えて

0

私はそのエラーを以前は見たことがありませんが、おそらく単一ノードへのデータをあまりにも速く押し込んだように思えます。書き込み負荷を処理することができたように見えるかもしれませんが、しばらくしてから、圧縮に追いつくことができず、何かがオーバーフローするまでより多くの圧縮ジョブを作成し続けました。恐らくSSTが壊れている可能性があります。

データをより遅い速度でプッシュし、プッシュ中に圧縮の状態を監視して、コンパクションジョブが適時に完了し、蓄積されないようにしてください。書き込み速度を遅くすることができない場合は、負荷を分割するためにノードがさらに必要になることがあります。

私が見てきた最も近いエラーは、多くのデータをプッシュした後に、いくつかのキューに格納された圧縮ジョブが圧縮シナリオに表示されていることですが、それらのどれも開始せず、私は、クラスタ内のすべてのノードをロールバックして再起動することでそれをクリアすることができました。

+0

私は書いている間に普通のテーブルの圧縮を作り、正常に完了しました。私は 'system.batches'圧縮も見ましたが、通常は完了しました。システムにストレスをかけた後、システムのバッチが累積し始めました他のテーブルもあります)。ノードがアイドルだったときに他のコンパクションは完了しましたが、280は終了しませんでした。ノードを消去してデータを再度プッシュしなければなりませんでした。私はタイムアウト(例えば、ノードが圧迫されている)を取得するので、私は常に "最大"速度で書き込みます。 – xmas79

関連する問題