用Cassandra写得很慢



我是NoSQL的新手,尤其是Cassandara。目前正在用Cassandra做一些基准测试,并且遇到了非常慢的写入吞吐量。

正如它所说的,Cassandra每秒可以执行数十万次插入,但是我没有观察到这一点:1)当我通过8个CQL客户端同时发送10万个插入时,吞吐量约为每秒14470个插入。2)当我通过8个Thrift客户端做同样的事情时,吞吐量是每秒16300个插入。

我认为Cassandra的表现可以提高,但我不知道该调什么。请看看下面的测试条件并给出建议。谢谢你。

测试条件:

1。 Cassandra集群部署在三台机器上,每台机器有8核Intel(R) Xeon(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。提交日志写入本地硬盘,数据写入Lustre。

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: []

你是否使用8个线程/进程来做写?如果每次写需要0.5 ms,那么8个线程/进程每秒只能写16000次。

特别是对于python客户端,由于全局解释器锁,通过将每个客户端作为单独的进程而不是线程运行,您可能会看到更好的性能。

之后,如果可能的话,尝试将客户端拆分到多台机器上。

同时,确保您的客户端与所有三个节点都有联系,以便工作负载均匀分布。

将数据写入Lustre,而不是本地磁盘,可能是一个因素,但我没有使用Lustre的经验。

相关内容

  • 没有找到相关文章

最新更新