最近、本番環境で Cassandra データベースの使用を開始しました。single cross colo cluster of 24 nodes
意味が12 nodes in PHX
あり12 nodes in SLC colo
ます。というreplication factor of 4
意味があり2 copies will be there in each datacenter
ます。
以下は、keyspace
とcolumn families
が作成された方法Production DBA's
です。
placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy' および strategy_options = {slc:2,phx:2} でキースペース プロファイルを作成します。
create column family PROFILE_USER with key_validation_class = 'UTF8Type' and comparator = 'UTF8Type' and default_validation_class = 'UTF8Type' and gc_grace = 86400;
私たちは実行Cassandra 1.2.2
しておりorg.apache.cassandra.dht.Murmur3Partitioner
、 、 with KeyCaching
、SizeTieredCompactionStrategy
およびVirtual Nodes
enabled も持っています。
Cassandra 本番ノードのマシン仕様 -
16 cores, 32 threads
128GB RAM
4 x 600GB SAS in Raid 10, 1.1TB usable
2 x 10GbaseT NIC, one usable
以下は私が得ている結果です。
Read Latency(95th Percentile) Number of Threads Duration the program was running(in minutes) Throughput(requests/seconds) Total number of id's requested Total number of columns requested
9 milliseconds 10 30 1977 3558701 65815867
Cassandra をもっと良くするために他に何を試すべきかわかりませんread performance
。私の場合、ディスクにヒットしていると想定しています。レプリケーション係数をより高い数値に増やしてみるべきですか? 他の提案はありますか?
SSDと比較して、HDDからのデータの読み取りは約6〜12ミリ秒だと思いますか?私の場合、推測するたびにディスクにヒットしており、キーキャッシュを有効にしてもここではうまく機能しません。OS ページ キャッシュを使用する方が効率的であるため、RowCache を有効にできません。JVM で行キャッシュを維持するのは非常にコストがかかるため、行キャッシュは 100K 行未満など、行数が少ない場合にのみ使用することをお勧めします。
私の場合、キーキャッシングが正常に機能しているかどうかを確認する方法はありますか?
これは、列ファミリーのスキーマを表示すると得られるものです-
create column PROFILE
with column_type = 'Standard'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and key_validation_class = 'UTF8Type'
and read_repair_chance = 0.1
and dclocal_read_repair_chance = 0.0
and populate_io_cache_on_flush = false
and gc_grace = 86400
and min_compaction_threshold = 4
and max_compaction_threshold = 32
and replicate_on_write = true
and compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
and caching = 'KEYS_ONLY'
and compression_options = {'sstable_compression' : 'org.apache.cassandra.io.compress.SnappyCompressor'};
優れた読み取りパフォーマンスを得るために変更する必要があるものはありますか?