データをCassandraにロードしようとしていますが、失敗しています。私は単一のノード(ラップトップ)で動作していますが、小さなクラスタ(3-5ノード)でも同じ動作が見られます。私はデフォルト設定でCassandra 3.9を実行しています。データの書き込み時にCassandraが失敗する
DataStax Javaドライバ3.0.0を使用して2つのスレッドから書き込みを行っています。私は5-10Kの列で50KBの行を持つ行を書いています。ディスク上の合計データセットは約40GBになります。私は5行同時に/スレッドを書いています。
しばらく挿入した後、私はタイムアウトを書く得るために開始します。
com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)
私は指数バックオフして再試行してください。最終的には、書き込みは前方進行を停止する。この時点で、私は非常に長いGCの一時停止を見ている:すべての時間はGCに費やされているよう
WARN [Service Thread] 2017-01-11 19:04:54,529 GCInspector.java:282 - ConcurrentMarkSweep GC in 4139ms. CMS Old Gen: 3456106376 -> 3455729576; Par Eden Space: 671088640 -> 670388064; Par Survivor Space: 83886080 -> 58722784
WARN [Service Thread] 2017-01-11 19:04:58,692 GCInspector.java:282 - ConcurrentMarkSweep GC in 4010ms. CMS Old Gen: 3456105584 -> 3455769528; Par Survivor Space: 83886080 -> 62960320
この時点で、それが見えます。私が書いた仕事を殺したとしても、カサンドラは回復しないようです。最終的にOutOfMemoryErrorで終了します。
memtable_heap_space_in_mb: 32
memtable_offheap_space_in_mb: 32
と(多分私はちょうど十分な長待っていないよが)それがOOMエラーを修正している場合があります:私は32メガバイトにmemtableスペースを下げました。
私はCassandra +指数関数的バックオフがライターに最大均衡書き込み速度を絞ることを望んでいましたが、それは起こっていないようです。それはカサンドラにとって非現実的な期待ですか?私は作家のレートを制限することができますが、私はどのようなメトリックがレート制限に合理的であるか分かりません。何か案は?
私の動作は次のようになります。http://stackoverflow.com/questions/21715622/large-writes-cause-instability-in-cassandra-ring RussSの答えのポイント4は関連しているようです。これはまだ書き込み速度を調整する方法を説明していません。 –