利用雅虎ycsb对cassandra做性能测试
准备:
环境:
两台虚拟机:ip:192.168.138.128/129;配置:2核4G;
版本:apache-cassandra-3.10
ycsb-cassandra-binding-0.13.0-SNAPSHOT
系统参数优化:
1 时钟同步-----非常重要,涉及到集群内数据同步问题
在crontab中加上:
*/1 * * * * /usr/sbin/ntpdate time.nist.gov
2 关闭cpu变频控制
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governordo
[ -f $CPUFREQ ] || continue
echo -n performance > $CPUFREQdone
3 在/etc/sysctl.conf增加配置文件:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
vm.max_map_count = 1048575
vm.swappiness=0
4 关闭zone_reclaim_mode
$ echo 0 > /proc/sys/vm/zone_reclaim_mode
5 增加cassandra用户控制 :/etc/security/limits.d/cassandra.conf
<cassandra_user> - memlock unlimited
<cassandra_user> - nofile 100000
<cassandra_user> - nproc 32768
<cassandra_user> - as unlimited
6 redhat下需要修改/etc/security/limits.d/90-nproc.conf:
cassandra_user - nproc 32768
确认参数是否优化可以看cassandra进程号相关文件:
$ cat /proc/pid/limits
关闭使用swap分区:
swapoff --all
安装配置
不再赘述,直接解压放到指定地点就好了。需要注意的是在cassandra.yaml中需要更改以下配置:
cluster_name: 'mycluster'
data_file_directories:
- /data/cassandra/data
commitlog_directory: /data/cassandra/commitlog
saved_caches_directory: /data/cassandra/saved_caches
- seeds: "127.0.0.1,192.168.138.128,192.168.138.129"
listen_address: 192.168.138.128
rpc_address: 192.168.138.128
安装配置ycsb:
从github中下载最新版本的ycsb进行编译:
mvn -pl com.yahoo.ycsb:cassandra-binding -am clean package
(注意:mvn要用3版本,同时需要在编译本机环境开启一个127.0.0.1的cassandra并执行以下脚本:
CREATE KEYSPACE ycsb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true;
CREATE TABLE ycsb.usertable (
y_id text PRIMARY KEY,
field0 text,
field1 text,
field2 text,
field3 text,
field4 text,
field5 text,
field6 text,
field7 text,
field8 text,
field9 text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
)
然后解压包:cp /root/YCSB-master/cassandra/target/ycsb-cassandra-binding-0.13.0-SNAPSHOT.tar.gz ~/
如果报相关日志错误则下载:slf4j-1.7.25.tar.gz将相关的Log4j包放置到对应的lib目录下。
配置cassandra.properties:
hosts = 192.168.138.128,192.168.138.129
port = 9042
cassandra.keyspace = usertable
cassandra.username = dd
cassandra.password = 111111
cassandra.readconsistencylevel = ANY
cassandra.writeconsistencylevel = ANY
cassandra.maxconnections = 100
cassandra.connecttimeoutmillis = 1000000000
cassandra.readtimeoutmillis = 1000000000
配置workload:
- #vim workloads/workloada
- workload=com.yahoo.ycsb.workloads.CoreWorkload
- readallfields=false
- readproportion=0.5
- updateproportion=0.5
- scanproportion=0
- insertproportion=0
- requestdistribution=zipfian
- fieldcount 表示每条数据中的字段数,默认为 10;
- fieldlength 表示每个字段的值的长度,默认为 100;
- readallfields 域用来标识是否读取所有的所有的字段,取值有 ture 或 false;
- readproportion,
- updateproportion,
- scanproportion,
- insertproportion 分别表示该 workload中读、更新、扫描和插入操作占总操作的百分比,这四个值的和为 1;
- requestdistribution 表示数据的分布情况,当前支持 uniform,zipfian 和 latest,默认为 uniform;
- maxscanlength 域主要为扫描操作定义,定义了最大扫描的记录数量,默认为 1000;
- scanlengthdistribution 域也是为扫描操作定义的,为每次扫描的长度定义相应的分布,默认是 uniform;
- insertorder 域主要分两种 ordered 和 hashed,默认为 hashed;
- operationcount 总共的 operation 数量;
- maxexecutiontime 为该 workload 定义了最长的执行时间,单位为 s。
- AverageLatency(平均潜伏期)平均潜伏期(average latency):指当磁头移动到数据所在的磁道后,然后等待所要的数据块继续转动(半圈或多些、少些)到磁头下的时间,单位为毫秒(ms)。平均潜伏期是越小越好,潜伏期小代表硬盘的读取数据的等待时间短,这就等于具有更高的硬盘数据传输率。
创建用户结构:
CREATE KEYSPACE usertable WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
- create table usertable (y_id varchar primary key,field0 varchar,field1 varchar,field2 varchar,field3 varchar,field4 varchar,field5 varchar,field6 varchar,field7 varchar,field8 varchar,field9 varchar);
执行命令./bin/ycsb load cassandra-cql -P workloads/workloada -P cassandra.properties -p columnfamily=usertable -s -threads 20 > ./writeread-log.log
结果如下:
Datacenter: datacenter1; Host: /192.168.138.128; Rack: rack1
[OVERALL], RunTime(ms), 4974.0
[OVERALL], Throughput(ops/sec), 201.04543626859672
[TOTAL_GCS_Copy], Count, 13.0
[TOTAL_GC_TIME_Copy], Time(ms), 51.0
[TOTAL_GC_TIME_%_Copy], Time(%), 1.0253317249698433
[TOTAL_GCS_MarkSweepCompact], Count, 0.0
[TOTAL_GC_TIME_MarkSweepCompact], Time(ms), 0.0
[TOTAL_GC_TIME_%_MarkSweepCompact], Time(%), 0.0
[TOTAL_GCs], Count, 13.0
[TOTAL_GC_TIME], Time(ms), 51.0
[TOTAL_GC_TIME_%], Time(%), 1.0253317249698433
[CLEANUP], Operations, 200.0
[CLEANUP], AverageLatency(us), 11310.105
[CLEANUP], MinLatency(us), 0.0
[CLEANUP], MaxLatency(us), 2263039.0
[CLEANUP], 95thPercentileLatency(us), 0.0
[CLEANUP], 99thPercentileLatency(us), 1.0
[INSERT], Operations, 1000.0
[INSERT], AverageLatency(us), 230845.253
[INSERT], MinLatency(us), 2180.0
[INSERT], MaxLatency(us), 807423.0
[INSERT], 95thPercentileLatency(us), 659455.0
[INSERT], 99thPercentileLatency(us), 699903.0
[INSERT], Return=OK, 1000
参考资料:http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettings.html
http://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsCStress.html
http://blog.csdn.net/qianlong4526888/article/details/53747617
利用雅虎ycsb对cassandra做性能测试的更多相关文章
- Cassandra配置多节点集群以及使用雅虎YCSB压测Cassandra 3.11
这几天在搭Cassandra集群以及对Cassandra的性能测试,步骤还挺多,记录一下. 关于Caaandra在服务器上配置多节点集群,可以参考一下文章: http://blog.csdn.net/ ...
- 用BenchmarkDotNet给C#程序做性能测试
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用BenchmarkDotNet给C#程序做性能测试.
- 针对C#程序做性能测试的一些基本准则
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:针对C#程序做性能测试的一些基本准则.
- 京东无人超市的成长之路 如何利用AI技术在零售业做产品创新?
随着消费及用户体验的需求升级.人货场的运营效率需求提升.人工智能技术的突破以及零售基础设施的变革等因素共同推动了第四次零售革命的到来,不仅在国内,国外一线巨头互联网亚马逊等企业都在研发无人驾驶.无人超 ...
- sysbench的安装和做性能测试
sysbench的安装和做性能测试 http://imysql.cn/node/312 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况. ...
- Jmeter工具做性能测试 常见的错误汇总
在Win机器上用Jmeter做性能测试,汇总下我自身遇到的错误和解决方案 java.net.BindException: Address already in use: JVM_Bind 原因分析:压 ...
- 利用基准电压效正Vcc做参考电压的ADC采样计算方法
利用基准电压效正Vcc做参考电压的ADC采样计算方法
- 使用Jmeter做性能测试
上周刚刚做完项目的性能测试.今天整理和总结一下,随便分享给大家. 首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析.场景分析大家根据自己的项目系统进行分析设计,我们选用 ...
- UIView封装动画--iOS利用系统提供方法来做转场动画
UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...
随机推荐
- SpringBoot -- 配置mysql、hibernate
# application.properties# Server settings (ServerProperties)server.port=8081server.address=127.0.0.1 ...
- 关于maven项目 启动页面报错 The type java.io.ObjectInputStream cannot be resolved.
这种情况,要修改jdk版本,默认jdk选择 jdk不选jre windows---->perference---->java----->installes jres-----> ...
- nginx访问控制用户认证两种方式
一.用户认证1.首先需要用http来生成密码文件即安装apache :yum install -y httpd 生成密码文件:htpasswd -c /usr/local/nginx/conf/htp ...
- python学习笔记:(四)tuple(元组)常用方法
tuple(元组)的常用方法 1.del 删除元组 #del 删除元组 a=(1,2,3) del a print(a) 2.len() 计算元组中,值的个数 #len:计算元组元素的个数 a=(1, ...
- Jmeter之if控制器
在使用中,一些操作可以执行,需要满足一些特定的条件,这个时候就可以使用if控制器去控制. 一.界面显示 二.配置说明 1.名称:标识,建议设置为判断的功能 2.注释:说明 3.条件:是指需要满足那种条 ...
- 【Struts2】工作流程
转发两篇文章 一个请求在Struts2框架中的处理分为以下几个步骤: 1.客户端发出一个指向servlet容器的请求(tomcat): 2.这个请求会经过图中的几个过滤器,最后会到达FilterDis ...
- 【HANA系列】SAP HANA Studio出现"Fetching Children..."问题
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP HANA Studio出 ...
- 【MM系列】SAP MM模块-配置PO的创建时间
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-配置PO的创建时间 ...
- 浅谈CSS的模块化
一.简介 Web前端模块化:HTML模块化.CSS模块化以及JS模块化三个部分: 二.CSS模块化背景 对于小型项目来说,css的量还不至于庞大,问题没有凸显,而如果要开发和持续维护一个较为大型的项目 ...
- window环境rabbitMQ安装和php扩展安装
下面的安装步骤,已经在2018-11-27试验通过. 1.安装前的准备 phpinfo查看php的版本.系统是多少位的,php版本是否是线程安全,php.ini文件的路径 2.安装rabbitMQ 安 ...