繁体   English   中英

Cassandra压力测试结果评估

[英]Cassandra Stress Test results evaluation

我一直在使用cassandra-stress工具来评估我的cassandra集群已有一段时间了。

我的问题是我无法理解为我的特定用例生成的结果。

我的架构看起来像这样:

CREATE TABLE Table_test(
      ID uuid,
      Time timestamp,
      Value double,
      Date timestamp,
      PRIMARY KEY ((ID,Date), Time)
) WITH COMPACT STORAGE;

我已在自定义yaml文件中解析此信息,并使用参数n=10000threads=100 ,其余为默认选项( cl=onemode=native cql3等)。 Cassandra集群是一个3节点的CentOS VM设置。

自定义yaml文件的一些细节如下:

insert:
    partitions: fixed(100)
    select: fixed(1)/2
    batchtype: UNLOGGED

columnspecs:
    -name: Time
     size: fixed(1000)
    -name: ID
     size: uniform(1..100)
    -name: Date
     size: uniform(1..10)
    -name: Value
     size: uniform(-100..100)

我到目前为止的观察如下:

  1. n=10000且time: fixed(1000) ,插入的行数为1000万。 (10000 * 1000 = 10000000)
  2. 行键/分区的数量是10000(ie n) ,其中一次取100个分区(这意味着100 * 1000 = 100000个键值对),其中一次处理50000个键值对。 (这是因为select: fixed(1)/2 ~50%)

输出消息也确认相同:

使用[100..100]分区和[50000..50000]行(分区中总行数为[100000..100000])生成批次

对于具有上述相同配置的连续运行,我得到的结果如下:

Run Total_ops   Op_rate Partition_rate  Row_Rate   Time 
1     56           19     1885           943246     3.0
2     46           46     4648          2325498     1.0
3     27           30     2982          1489870     0.9
4     59           19     1932           966034     3.1
5     100          17     1730           865182     5.8

现在我需要了解的内容如下:

  1. 这些指标中的哪一个是吞吐量,即每秒插入的记录数? 是Row_rate,Op_rate还是Partition_rate? 如果它是Row_rate,我可以在这里安全地得出结论,我能够每秒插入近100万条记录吗? 关于Op_rate和Partition_rate在这种情况下意味着什么的任何想法?
  2. 为什么Total_ops在每次运行中变化如此剧烈? 线程数是否与此变化有关? 我在这里可以得出什么关于我的Cassandra设置稳定性的结论?
  3. 如何确定每个线程的批量大小? 在我的例子中,批量大小是50000吗?

提前致谢。

行速率是您已插入数据库的CQL行数。 对于您的表,CQL行是一个元组(ID uuid, Time timestamp, Value double, Date timestamp)

分区率是C *必须构建的分区数。 分区是在Cassandra中保存和排序数据的数据结构,具有相同分区键的数据最终位于同一节点上。 此分区速率等于在时间窗口中插入的分区键中的唯一值的数量。 对于您的表,这将是(ID,Date)唯一值

Op Rate是必须完成的实际CQL操作的数量。 从您的设置中,它运行未记录的批次以插入数据。 每个插入包含大约100个分区(ID和日期的唯一组合),这就是OP Rate * 100~ = 分区率的原因

总OP应包括所有操作,读写。 因此,如果您有任何读取操作,那么也将包括在内。

我建议您更改批量大小以匹配您的工作负载,或根据您的实际数据库使用情况将其保持为1。 这应该提供更现实的方案。 此外,运行时间远远超过100次操作非常重要,以便真正了解系统的功能。 当数据集的大小增加超过机器中的RAM量时,会出现一些最大的困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM