3 ノード クラスター (Cassandra 1.2.1) とレプリケーション ファクター 3 の列ファミリーをセットアップしました。
列ファミリーは metric_hour と呼ばれ、列名で 1 時間の 15 秒平均値を保持します。
- アカウント名
- メトリック名
- 値の型 (文字列)
- ユニットタイプ(文字列)
- m0
- m1 ...
- m239
私は 6 つのクライアントを並行して実行しており、それぞれが合計 210 万のメトリック値 (1 つのメトリックに対して 1 年全体で 15 秒の値) を持つデータをクラスターにプッシュしています。各メトリック値のデータを読み書きしたくないので、前もって保存する metric_hours の完全なリストを計算し、最後にそれらをクラスターに送信します。挿入は、BEGIN BATCH ... END BATCH を使用して 50 のグループでバッチ処理されます。
約 5 ~ 6 分後、Cassandra クラスターは圧倒され、ヒープがいっぱいになり、ノードに障害が発生し始めます (応答しなくなるか、完全に停止します)。このセットアップを何度も実行しましたが、同じ結果が得られました。
各 cassandra ノードは、独自の専用ハードウェア、クアッド コア 2.3 GHz Intel i7 CPU、および 16 GB の物理 RAM (これらは Mac Mini Server マシンです。データは内部 SSD に永続化されます) で実行されます。cassandra-env を介して -Xmx および -Xmn を 2 ~ 8 GB の範囲で設定してみました。8GB で実行すると、クラスターの実行時間が長くなりますが、しばらくすると失敗します。
また、一貫性レベルを QUORUM に設定しました。これにより、クラスターが少し長く存続します。分かそこら。
すべての CQL クエリは、Datastax java-driver と CQL3 を使用して Cassandra クラスターに送信されます。row_cache のオンとオフを試しました。
Riak クラスターでまったく同じセットアップを実行すると、比較的長期間問題なく動作します。したがって、Cassandra のセットアップで何が改善できるのか、または何が間違っている可能性があるのか 疑問に思っています。