首页 文章

在Cassandra写得很慢

提问于
浏览
1

我是NoSQL和Cassandara的新手 . 目前正在与Cassandra进行一些基准测试并且遇到非常慢的写入吞吐量 .

正如所说,Cassandra每秒可以执行数十万次插入,但是我没有注意到这一点:1)当我通过8个CQL客户端同时发送10万个插入时,吞吐量是每秒约14470个插入 . 2)当我通过8个Thrift客户端执行相同操作时,吞吐量每秒约为16300次插入 .

我认为Cassandra的性能可以提高,但我不知道该调整什么 . 请查看下面的测试条件并提供建议 . 谢谢 .

Tests conditions:

  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上 .

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

2 回答

  • 2

    你是否使用8个线程/进程来写?如果每次写入需要0.5 ms,则8个线程/进程每秒只能执行16,000次写入 .

  • 2

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

    之后,尝试将客户端拆分到多台计算机上 .

    此外,请确保您的客户端正在联系所有三个节点,以便均匀分布工作负载 .

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

相关问题