私は特にNoSQLとCassandaraの初心者です。現時点では、Cassandraでベンチマークを行い、非常に遅い書き込みスループットを経験しています。Cassandraでの書き込みが非常に遅い
Cassandraは毎秒数十万の挿入を実行できますが、私はこれを観察していません。 1)8個のCQLクライアントから同時に100,000個の挿入を送信するとスループットは〜14470個/秒。 2)8つのThriftクライアントを介して同じ処理を実行すると、スループットは〜16300 /秒です。
私はカッサンドラのパフォーマンスを改善できると思いますが、チューニングするものはわかりません。以下のテスト条件を見て、何かアドバイスをしてください。ありがとうございました。
試験条件:
Cassandraのクラスタが3台のマシン上に展開されている1、各マシンは8つのコアのIntel(R)Xeonプロセッサ(R)CPUのE5420する@ 2.50GHzを有する、RAMは、16ギガバイト、ネットワークであります速度は1000Mb/sです。
2.データサンプルです*
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '1.0';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA1';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '47.1';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['volume'] = '300.0';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['se'] = '1';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '2.0';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA1';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '44.89';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['volume'] = '310.0';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['se'] = '1';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '3.0';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA2';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '0.35';
3.はコミットログをローカルハードドライブに書き込まれ、データが光沢に書かれています。
4.鍵空間の説明
Keyspace: MD:
Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
Durable Writes: true
Options: [datacenter1:1]
Column Families:
ColumnFamily: MM
Key Validation Class: org.apache.cassandra.db.marshal.BytesType
Default column value validator: org.apache.cassandra.db.marshal.BytesType
Columns sorted by: org.apache.cassandra.db.marshal.BytesType
Row cache size/save period in seconds: 0.0/0
Key cache size/save period in seconds: 200000.0/14400
Memtable thresholds: 2.3249999999999997/1440/496 (millions of ops/minutes/MB)
GC grace seconds: 864000
Compaction min/max thresholds: 4/32
Read repair chance: 1.0
Replicate on write: true
Built indexes: []
はい、3つの同時Pythonスクリプトを使用して書き込みを行っています。あなたはその制限を意味するのですか?または私は何か間違っている? – Evgeny
スレッド/プロセスがアクションを順番に実行していて、各アクションが100ミリ秒かかった場合、1秒間に10回しか実行できず、2スレッドで20秒間に1回だけ実行できます。 3つのスレッドを使用して、1秒間に100k回の操作を実行したい場合、各操作は0.03 msで完了する必要があります。クライアント側の並列性の欠如があなたの限界かもしれません。チェックする他のものは、サーバー(ディスクとCPUの両方)の負荷です。 – sbridges