nosql性能测试工具ycsb0.1的使用
使用文档参考地址:https://www.cnblogs.com/SailorXiao/p/5808828.html
ycsb地址:https://github.com/brianfrankcooper/YCSB
1、通过tar.gz包方式安装
#安装mongodb jdk maven ycsb,因环境中有安装了 mongodb jdk ,因此只需安装 maven ycsb。
安装参考:https://github.com/brianfrankcooper/YCSB/tree/master/mongodb
#安装maven
#下载maven
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
#配置maven
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh
Add the following to maven.sh
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
Reload bash and test mvn
#验证maven
bash
mvn -version
#下载ycsb tar.gz 包:
https://github.com/brianfrankcooper/YCSB/releases/
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz
tar xfvz ycsb-0.12.0.tar.gz
cd ycsb-0.12.0
ycsb分为加载和执行阶段
#运行负载时的参考文档
https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload
#设置负载时的参数文档
https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties
#加载阶段 用于构造数据
bin/ycsb.sh load mongodb-async -s -threads 10 -target 100 -P workloads/workload> /usr/local/src/ycsb-001.txt
#执行阶段用于压测
#压测mongodb时的参考
https://github.com/brianfrankcooper/YCSB/tree/master/mongodb
bin/ycsb.sh run mongodb-async -s -threads 10 -target 100 -P workloads/workload> /usr/local/src/ycsb-001.txt
同步方式,即加载和执行同时进行:mongodb
异步方式,即加载和执行分开进行:mongodb-async
#slf4j log4j MongoDB jar文件需要在classpath中ycsb.jar
#新建测试mongodb库 stressdb 账号:tpstest 密码:tpstest
#linux上启动ycsb
bin/ycsb.sh run basic -P workloads/workloada
#常用参数说明 命令行的配置优先级高于文件中同样参数的配置
./bin/ycsb load basic -P workloads/workloada -P large.dat
large.dat中内容
recordcount=100000000
则第2个P 中large.dat会覆盖workloada中所有参数
-P file Specify workload file #加载workload设置的参数
-cp path Additional Java classpath entries
-jvm-args args Additional arguments to the JVM
-p key=value Override workload property
-s Print status to stderr #把运行状态写到err中
-target n Target ops/sec (default: unthrottled) #每秒操作的次数
-threads n Number of client threads (default: 1) #并发线程数
#根据设置的时间(毫秒)间隔显示响应的时间,2个参数都要配置上
-p measurementtype=timeseries
-p timeseries.granularity=2000
workload文件中mongodb配置如下项:
#mongodb配置
mongodb.url=mongodb://127.0.0.1:27010/ #对应的mongodb uri参数等
mongodb.database=ycsb #对应的mongo数据库名称
#mongodb.batchsize=1 #操作数量 批量提交和插入的数量
#mongodb.upsert=false #操作类型 true 使用更新操作 false 使用插入操作
mongodb.writeConcern=acknowledged #写安全设置 默认 acknowledged ,errors_ignored、unacknowledged、acknowledged、journaled、replica_acknowledged、majority 在url中使用 w 和journal已经过时
#mongodb.readPreference=primary # 默认 primary,primary、primary_preferred、secondary、secondary_preferred、nearest 在url中使用 mongodb.readPreference 已经过时
#mongodb.maxconnections=100 #线程数最大数值,默认 100, maxPoolSize 在url中使用maxPoolSize已经过时
#mongodb.threadsAllowedToBlockForConnectionMultiplier=5 #默认值5 最大等待队列长度 在url中使用waitQueueMultiple 已经过时
#其他配置 文档大小 fieldlength*fieldcount=6KB
#threadcount=10 #并发线程数
#target=100 #每秒操作的次数
maxexecutiontime=300s #压测时间
recordcount=100000 #测试文档的数量
operationcount=1000 #操作的次数
workload=com.yahoo.ycsb.workloads.CoreWorkload #实现的workload类
readallfields=true #读取时,是否需要读取所有字段 true 需要 false 不需要
readproportion=0.95 #读操作百分比
updateproportion=0.25 #更新操作百分比
insertproportion=0.25 #插入操作百分比
scanproportion=1 #扫描操作百分比
requestdistribution=zipfian 小部分数据得到大部分请求 #请求的分布方式
maxscanlength=100 #扫描时最大长度
scanlengthdistribution=uniform #扫描方式
fieldlength=11 #字段大小 t_prilive表 单个字段最大长度11字节
fieldcount=30 #字段数量 t_live表 共有26个字段
#根据设置的时间(毫秒)间隔显示响应的时间,2个参数都要配置上
measurementtype=histogram
timeseries.granularity=2000
2、通过源码方式安装
需要安装jdk1.8及maven3,安装包:jdk-8u144-linux-x64.tar.gz apache-maven-3.5.2-bin.tar.gz
#jdk下载地址
http://www.oracle.com/technetwork/java/javase/downloads/index.html
#maven下载地址
http://maven.apache.org/download.cgi
#安装包连接地址
http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
cd /usr/local/src
#下载程序安装包
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
1)安装jdk1.8
cd /usr/local/src
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt
cd /opt
#更改jdk文件名称
mv jdk1.8.0_144 jdk1.8
#更改所属的用户和组
chown -R root:root jdk1.8
#配置java环境变量
vim /etc/profile或修改.bash_profile文件
#新增以下配置想到/etc/profile文件中
export JAVA_HOME=/opt/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
#优化tomcat8需要配置该项
#export LD_LIBRARY_PATH=/opt/apr1.5/lib
#让配置文件生效 source /etc/profile
修改java.security文件
#启动tomcat出现下列问题的解决办法
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [24,790] milliseconds.
打开$JRE_HOME/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/random
替换成
securerandom.source=file:/dev/./random
#通过javac -version java -version 命令检查jdk安装是否成功
2)安装maven3.5
#进入程序包路径
cd /usr/local/src
#解压缩maven
tar -zxvf apache-maven-3.5.2-bin.tar.gz -C /opt
#更改maven文件夹名称
cd /opt
mv apache-maven-3.5.2 maven3.5
#配置maven环境变量
vim /etc/profile
#新增以下配置想到/etc/profile文件中
export MAVEN_HOME=/opt/maven3.5
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
#让配置文件生效 source /ect/profile
#验证mavne是否安装和配置成功
mvn -v
3)安装所有支持压测的库
mvn clean package
4)只安装支持压测mongodb的库
mvn -pl com.yahoo.ycsb:mongodb-binding -am clean package