3

細い行 (5 ~ 50 列) を使用する大量の読み取りシナリオに合わせて Cassandra を調整したいと考えています。アイデアは、行キャッシュを使用し、データが行キャッシュに対して大きすぎる場合に備えて、キー キャッシュを有効にすることです。

24 GB RAM を搭載したデュアル Intel Xeon サーバーを使用しています (3 つのリング内に 2 つのデータ センター - 合計 6 台のマシンを提供)

これらは、デフォルト構成に加えた変更です。

cassandra-env.sh

#JVM_OPTS="$JVM_OPTS -ea"
MAX_HEAP_SIZE="6G"
HEAP_NEWSIZE="500M"

カサンドラ.yaml

# do not persist caches to disk
key_cache_save_period: 0
row_cache_save_period: 0

key_cache_size_in_mb: 512
row_cache_size_in_mb: 14336 
row_cache_provider: SerializingCacheProvider

6GB を Cassandra JVM に、0.5GB をキー キャッシュ (6GB ヒープのうち) に、14GB をオフヒープとして行キャッシュに割り当てるという考えです。JVMプロセスは1つしか実行されておらず、最大2GBのオーバーヘッドがあるはずなので、OSにはまだ4GBで十分です。

この設定は最適ですか? ヒントはありますか?

ありがとう、マチェイ

4

3 に答える 3

3

私は1.1.6バージョンを使用しています。
SerializingCacheProvider はキャッシュ データをネイティブ ヒープ領域に保存します。
その領域は GC インスペクト用ではありません。なのでGCは発生しません。
row_cache_size_in_mb 設定は、SerializingCache の参照オブジェクト用です。
その参照は FreeableMemory を使用して保存されます (1.1.x にありましたが、1.2 以降では変更されました)。
つまり、row_cache_size_in_mb を計算するときに、実際のキャッシュ値は計算されません。

結果でrow_cache_size_in_mbを計算したい場合は、最小サイズから設定してみてください。
私の場合、500mbを設定すると、各ノードは2Gの古い世代を使用していました(どのデータセットを扱うかによると)

于 2013-04-08T06:39:03.477 に答える
1

heapspace_calculatorを実行し、提案された値を初期ヒープ構成として使用します。「nodetool info」でヒープの使用状況を監視します。

短い列名を使用し、可能であれば列を結合するようにしてください。

于 2012-11-07T13:39:08.293 に答える
1

このセットアップは問題なく動作します - 私はそれをテストしました。

于 2013-01-04T20:08:50.293 に答える