• ycsb两个阶段说明


     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的压测。具体参数如上

  • 相关阅读:
    Product of Array Except Self
    如果裸写一个goroutine pool
    fasthttp 的 goroutine pool 实现探究
    golang实现权重轮询调度算法
    golang学习资料
    获取本机ip
    dnscache --源码笔记
    xsrftoken--源码笔记
    forwardport--源码笔记--注释
    golang 通过exec Command启动的进程如何关闭的解决办法 以及隐藏黑色窗口
  • 原文地址:https://www.cnblogs.com/bonelee/p/6282798.html
Copyright © 2020-2023  润新知