zoukankan      html  css  js  c++  java
  • Cassandra读写性能测试

    1. 测试目的
    测试Cassandra集群读写TPS的极值,确定Cassandra读写性能。

    2. 测试环境

    2.1 硬件信息

    CPU 8核 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
    RAM 16G

    2.2  软件信息

    JDK 1.8u151
    Cassandra 3.11.1
    cassandra-driver-core 3.3.2
    OS CentOS Linux release 7.3.1611

    2.3 集群信息

    集群名称 IP 类型
    JCPT Test Cluster 10.112.68.184 节点1
    10.112.68.185 节点2
    10.112.68.186 节点3(种子节点)
    10.112.68.189 节点4
    10.112.68.191 节点5
    10.112.68.192 节点6(种子节点)
     
     
    2.4   主要配置信息
     
    集群配置为单数据中心,测试时,数据库keyspace的,采取SimpleStrategy策略
    副本因子:3
    分区器:Murmur3Partitioner
     
    整个过程中通用设置如下
    A.线程池设置:
    setCoreConnectionsPerHost(HostDistance.LOCAL, 2)
    setMaxConnectionsPerHost(HostDistance.LOCAL, 4) 
    B.每次连接最大请求数量采取默认设置:本地端--1024;远程端--256
    C.本地线程池门限采用默认设置:32
     
     3. 测试过程
    先测试单个客户端的读写性能,再测试多个客户端的TPS,测试出服务器读写操作的TPS瓶颈。
    3.1  单客户端测试读写性能及结果
    在单个客户端对集群中的单表进行数据读写操作,测试读写性能。
    具体过程:
      100个并发向同一张表处理100W数据;
      200个并发向同一张表处理100W数据;
      500个并发向同一张表处理100W数据;
      1000个并发向同一张表处理100W数据;
      1500个并发向同一张表处理100W数据;
    (脚本测试所在机器:10.112.68.186)
     
    测试结果:

    l  表一 单数据库100W数据性吞吐量性能测试

      100 200 500 1000 1500
    insert 5472 5574 23429 30781 35024
    select 18985 20323 35795 39088 38927
    update 5766 5824 27805 34301 35867
    delete 5446 5328 26581 34934 34635 

    l  表二 单数据100W数据时间耗时时测试

      100 200 500 1000 1500
    insert 182.734 179.406 42.683 32.488 28.566
    select 52.672 49.206 27.937 25.583 25.702
    update 173.439 171.717 25.779 29.154 27.895
    delete 183.608 187.671 37.621 28.625 28.887
     
    为了直观上看各项性能变化,将上述表格使用折线图表示,如图1、图2所示: 

    图1 100W性能测试—TPS

     

    图2 100W性能测试—耗时(S)

    3.2   多客户端测试读写性能及结果

    在多个客户端分别对集群中的同一张表进行数据读写操作,测试读写性能。
    过程:
    I. 2个客户端进行分别处理100W数据,将各个客户端TPS值相加,计算集群TPS;
    II. 3个客户端进行分别处理100W数据, 将各个客户端TPS值相加,计算集群TPS;
    III.依次增加客户端数量,计算TPS达到瓶颈之后,停止增加;
    IV. 线程数量为500。
     
    结果:

    图3 多客户端性能测试—吞吐量(TPS)

     

    集群达到瓶颈之后开始抛出如下错误信息:

    Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)

    Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)

    Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)

                          ... ... 

    4  测试结论

      ( 1 )   从单客户端测试数据得出在并发大于500后个并发范围内,各项操作TPS提升幅度较大,并发数量为1500时TPS趋于稳定,测试线程数大于1500之后会出现响应超时错误。

      ( 2 )   当增加客户端数量,集群 TPS线性增加,集群读写TPS可以达到6万,之后趋于稳定,其中超过6个客户端同时进行百万级读数据操作时达到瓶颈,写操作在超过7个客户端后同时进行百万级写数据操作时性能达到瓶颈,此时写和修改操作TPS高于读的TPS。可知:大量数据操作时写的性能优于读。
     
     
    附件:
    测试代码 cassandra-test.rar
     
  • 相关阅读:
    PHP 标量类型与返回值类型声明
    如何使用 PHP 语言来编码和解码 JSON 对象
    mongodb的读写分离
    [FWT] UOJ #310. 【UNR #2】黎明前的巧克力
    drcom 不耍流氓
    drcom 不耍流氓
    Visual Studio 自定义项目模板
    Visual Studio 自定义项目模板
    Visual Studio 自定义项目模板
    【广告】win10 uwp 水印图床 含代码
  • 原文地址:https://www.cnblogs.com/chenjunjie12321/p/8253034.html
Copyright © 2011-2022 走看看