我在NoSQL和Cassandara特別是新手。目前正在與Cassandra進行一些基準測試,並且寫入吞吐量非常慢。 1)當我通過8個CQL客戶端同時發送100000個插入數據時,吞吐量爲〜14470個插入數據,每個插入數據流量爲14470個插入數據,每個插入數據流量爲14470個插入數據秒。 2)當我通過8個Thrift客戶端做同樣的事情時,吞吐量是每秒約16300個插入。非常緩慢的寫在卡桑德拉
我認爲卡桑德拉的表現可以改善,但我不知道調整什麼。請看下面的測試條件並提供一些建議。謝謝。
測試條件:
1.卡桑德拉集羣部署在三臺機器,每臺機器具有8個內核英特爾(R)至強(R)CPU E5420 @ 2.50GHz,RAM是16GB,網絡速度是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.提交日誌被寫入本地硬盤驅動器上時,數據被寫在光澤。
KEYSPACE描述
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: []
是的,我正在使用三個併發的Python腳本進行寫操作。你的意思是限制?或者我做錯了什麼? – Evgeny
如果您有1個線程/進程按順序執行操作,並且每個操作需要100 ms,則每秒只能執行10個操作,而2個線程可以每秒執行20個操作。使用3個線程,如果你想每秒獲得100k個操作,每個操作必須在0.03ms內完成。這種客戶端並行性的缺乏可能是您的限制。其他要檢查的是服務器上的負載(包括磁盤和CPU)。 – sbridges