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
 

Cassandra读写性能测试的更多相关文章

  1. Linux系统性能测试工具(九)——文件系统的读写性能测试工具之iozone

    本文介绍关于Linux系统(适用于centos/ubuntu等)的文件系统的读写性能测试工具-iozone: 参考链接: https://www.cnblogs.com/Dev0ps/p/788938 ...

  2. 使用iozone进行磁盘读写性能测试

    对于很多GIS工程师,经常需要对系统的磁盘性能进行测试,为了排查问题或者帮助用户进行系统设计. IOZone这个磁盘性能测试工具就是一个很方便的辅助工具. 下面就以个测试共享目录的读写性能为例,说明其 ...

  3. linux 磁盘读写性能测试

    1. 测试读取速度 haparm -Tt /dev/xxx 1.1 获取硬盘设备名称: fdisk -l Disk /dev/xvdf: 365.0 GB, 365041287168 bytes 25 ...

  4. InfluxDB读写性能测试

    今天进行了InfluxDB和MySQL的对比测试,这里记录下结果,也方便我以后查阅. 操作系统: CentOS6.5_x64InfluxDB版本 : v1.1.0MySQL版本:v5.1.73CPU ...

  5. OpenWrt中对USB文件系统的操作, 以及读写性能测试

    参考 http://h-wrt.com/en/doc/flash 1. 查看usb存储在启动日志中的信息 # dmesg [ 5.720000] usbcore: registered new int ...

  6. [eMMC]eMMC读写性能测试

    读写速率(dd) https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/ eMMC健康情况(mm ...

  7. java对比IO和NIO的文件读写性能测试

    1. NIO采用更接近操作系统执行IO的方式:通道和缓存器:顾名思义,数据源的数据由缓存器通过通道进行传输. 2. 在JDK5之后,原始IO系统底层用NIO进行了优化,这可以通过sun公布的源码中找到 ...

  8. 利用雅虎ycsb对cassandra做性能测试

    准备: 环境: 两台虚拟机:ip:192.168.138.128/129;配置:2核4G: 版本:apache-cassandra-3.10    ycsb-cassandra-binding-0.1 ...

  9. Glusterfs读写性能测试与分析

    一.测试目的: 1.测试分布卷(Distributed).分布式复制卷(Distributed-Replicate).条带卷(Strip)和分布式条带复制卷(Distributed-Strip-Rep ...

随机推荐

  1. psoc4的capsense总结

    psoc4的capsense算是个比较实用的东西,触摸按键,显得有点高大上,呵呵.今天试用了一下,对照着数据手册,现在总结一下. 1,先说原理,官方做文档的时候应该把原理讲一下,不要上来就讲怎么用,怎 ...

  2. liunx系统环境下,爆出该错误"org.eclipse.wst.validation" has been removed解决办法

    导出maven工程遇到的问题,"org.eclipse.wst.validation" has been removed,还以为是工程本身的问题,后来发现是eclipse的问题. ...

  3. LG2590 [ZJOI2008]树的统计

    题意 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: ...

  4. [LeetCode系列]卡特兰数(Catalan Number) 在求解独特二叉搜寻树(Unique Binary Search Tree)中的应用分析

    本文原题: LeetCode. 给定 n, 求解独特二叉搜寻树 (binary search trees) 的个数. 什么是二叉搜寻树? 二叉查找树(Binary Search Tree),或者是一棵 ...

  5. [转]console.time和console.timeEnd用法

    console.time和console.timeEnd这两个方法可以用来让WEB开发人员测量一个javascript脚本程序执行消耗的时间.随着WEB应用越来越重要,JavaScript的执行性能也 ...

  6. CentOS 添加常用 yum 源(转)

    CentOS 的官方源去掉了一些与版权有关的软件,因此想要安装这些软件或者手动下载安装,或者使用其他源. 下面我推荐常用的两个源, 这两个源基本可以满足一般服务器的使用需求. 首先, 添加源之前要确定 ...

  7. RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿

    CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...

  8. pheanstalk put 延时队列

    用pheanstalk客户端投放延时任务时,按照文档的参数顺序投放起不到延时的效果,取出(预订)job时data获取的数据也不是投放的字段值, put <pri> <delay> ...

  9. 关于cookie你不知道的

    cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的.第一:每个特定的域名下最多生成20个cookie1.IE6或更低版本最多20个cookie2.IE7和之后 ...

  10. STL 练习

    makefile ------------------------------------- %.o : %.cpp g++ -g -c $< -o $@ all: t t2 rmXX % : ...