ycsb有几个目录需要注意下:
bin:
- 目录下有个可执行的ycsb文件,是个python脚本,是用户操作的命令行接口。ycsb主逻辑是:解析命令行、设置java环境,加载java-libs,封装成可以执行的java命令,并执行 workloads:
- 目录下有各种workload的模板,可以基于workload模板进行个性化修改 core:
- 包含ycsb里各种核心实现,比如DB的虚拟类DB.java,各个db子类都要继承该类;还有比如workload抽象类,如果我们要自定义workload实现也需要继承该类 各种DB的目录:
- 比如mongo,redis等,里面包含了对应测试的源码等。
- 当ycsb mvn编译后,会在对应的目录下生成target文件,ycsb会加载对应target文件中的class类

2 使用

ycsb在执行的时候,分为两阶段:load阶段 和 transaction阶段

2.1 load阶段

该阶段主要用于构造测试数据,ycsb会基于参数设定,往db里面构造测试需要的数据,如:

1
./bin/ycsb load mongodb-async -s -P workloads/workloada > outputLoad.txt

mongodb-async

在ycsb中,对于不同的db都有一些选项,比如mongo就有mongodb 和 mongodb-async。 
默 认的mongodb表示同步,即load和run使用同步的方式,ycsb会调用mongodb/src底下对应的MongodbClient实现对应的 insert/update等操作。如果设置了mongodb-async,ycsb会调用mongodb/src底下对应的 AsyncMongoDbClient.java实现

参数设置:

1
2
3
4
5
6
7
8
Options:
    -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 // 把状态达到stderr中
    -target n      Target ops/sec (default: unthrottled) // 每秒总共操作的次数
    -threads n     Number of client threads (default: 1) // 客户端线程数

参数解读:

-P workload文件

在ycsb的目录下有多种workload,参考:https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads,我们以workloada举例子 
基础配置:

1
2
3
4
5
6
7
8
9
10
11
12
recordcount=1000     # 总共的操作条数
operationcount=1000  # 总共操作的次数
workload=com.yahoo.ycsb.workloads.CoreWorkload=
 
readallfields=true  # 在读取的时候,是否需要读取所有字段
 
readproportion=0.5  # 读取比例
updateproportion=0.5 # update比例
scanproportion=0
insertproportion=0
 
requestdistribution=zipfian

workloada的负载比较中,read和update类比例为1:1,里面一些设置参数如上,如果我们再设置mongo的时候,还需要再workload中增加对应的mongo配置,如下:

1
2
3
mongodb.url=mongodb://192.168.137.10:34001/ycsb?  # mongodb对应的uri等
mongodb.database=ycsb # 对应的db
mongodb.writeConcern=normal # 写级别

-p选项

-p用于设置一些对应的参数,如果workload中的参数,也可以以-p的方式放在命令行中设置

-s

-s是表示,在运行中,把一些状态打印到stderr中,一般status信息,用于表示在运行中的一些中间状态(比如当前处理了多少请求,还有多少请求等)

-target n

表示1s中总共的操作次数(各个线程加起来的),如果性能不满足,比如最高性能只有100,你设置了1000,那么ycsb会尽量往这个数目去靠近。默认是不做限制

-thread 线程数

设置ycsb client的并发测试线程数,默认是1,单线程,所以再测试的时候,一定要设置这个选项

2.2 transcation阶段

在2.1load数据结束之后,ycsb就可以进行测试了,也就是transaction阶段。在transaction阶段,会基于workload中的比例设置,和线程参数设置进行db的压测。具体参数如上

ycsb两个阶段说明的更多相关文章

  1. SSL连接分为两个阶段:握手和数据传输阶段

    一.SSL概述SSL连接分为两个阶段:握手和数据传输阶段.握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥,必须在传输任何应用数据之前完成握手.一旦握手完成,数据就被分成一系列经过保护的记录进 ...

  2. 多路复用 阻塞/非阻塞IO模型 网络IO两个阶段

    1.网络IO的两个阶段 waitdata copydata send 先经历:copydata阶段 recv 先经历:waitdata阶段 再经历 copydata阶段 2.阻塞的IO模型 之前写的都 ...

  3. windows系统安装的两个阶段

    windows visa .windows7.windows server 2008系统安装的两个阶段1.Boot.WIM----Windows PE系统.提供了windows7安装向导! 2.Ins ...

  4. cms STW 的两个阶段

    CMS在初始标记和重复标记阶段会停顿

  5. 分布式事务(一)两阶段提交及JTA

    原创文章,同步发自作者个人博客 http://www.jasongj.com/big_data/two_phase_commit/ 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或 ...

  6. Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证

    Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证 1.1. ACID解决方案1 1.2. 数据库厂商在很久以前就认识到数据库分区的必要性,并引入了一种称为2PC( ...

  7. MySQL binlog 组提交与 XA(两阶段提交)

    1. XA-2PC (two phase commit, 两阶段提交 ) XA是由X/Open组织提出的分布式事务的规范(X代表transaction; A代表accordant?).XA规范主要定义 ...

  8. MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】

    概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...

  9. 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究 转载

    1.XA XA是由X/Open组织提出的分布式事务的规范.XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接 ...

随机推荐

  1. 小木虫emuch遭封禁,新域名muchong.com尚可用

    各位虫友: 因为小木虫站点个别虫子违反论坛规定,擅自上传了政治擦边的违规资源.导致小木虫域名 emuch.net 被通信局封禁! 我们第一时间对违规资源进行了删除处理,接下来.我们也将大批量的对站内的 ...

  2. phpcms使用session的方法

    phpcms使用session //session开始 必须有下面的代码,否则无效 private function _session_start() { $session_storage = 'se ...

  3. Python(常用模块)

    模块 模块 本质上就是一个.py文件 内置模块(解释器层面) 第三方模块(Python lib文件) 自定义模块(当前路径) 模块调用,包的概念 在计算机程序的开发过程中,随着程序代码越写越多,在一个 ...

  4. CNN学习笔记:目标函数

    CNN学习笔记:目标函数 分类任务中的目标函数 目标函数,亦称损失函数或代价函数,是整个网络模型的指挥棒,通过样本的预测结果与真实标记产生的误差来反向传播指导网络参数学习和表示学习. 假设某分类任务共 ...

  5. LeetCode:N叉树的前序遍历【589】

    LeetCode:N叉树的前序遍历[589] 题目描述 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 题目分析 使用栈结构. ...

  6. SQL 函数以及SQL 编程

    1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select --去下限:floor ☆select floor(price) from car --ABS 绝对值 --PI ...

  7. What is CRC and how does it works?

    What is CRC and how does it works? CRC errors refer to Layer 1 or 2 issues. Two things you should ch ...

  8. Apache 配置参数

    参数说明 1.Global Environment 全局环境配置,决定Apache服务器的全局参数3.Virtual Hosts—虚拟主机,虚拟主机不能与Main Server主服务器共存,当启用了虚 ...

  9. Nginx URL跳转

    配置需求 注:$document_uri  表示访问的url 需求:访问 www.abc.com  请求到 www.abc.com/abc/ 使用操作 1.在nginx配置文件中加入 if ($doc ...

  10. [转]React Native 语言基础之ES6

    React Native 是基于 React 这个前端框架来构建native app的架构.React Native基于ES6(即ECMAScript2015)语言进行开发的. JS的组成 1) 核心 ...