官方地址:https://github.com/brianfrankcooper/YCSB 本次这里我们以ycsb压测redis为例。 tar xf ycsb-0.15.0.tar.gz -C /usr/local/ cd /usr/local/ycsb-0.15.0 其中,workloads 目录下是各个压测模板文件 # cat workloads 的软件,功能上与ycsb类似。 $GOPATH/src/github.com/pingcap/go-ycsb cd $GOPATH/src/github.com/pingcap/go-ycsb make 稍等片刻即可完成编译。 编译完成后,用法和 ycsb基本上一样的,压测redis如下写法: load: .
https://github.com/brianfrankcooper/YCSB/tree/master/redis YCSB可以模拟真实业务场景进行压力测试,有一定真实性。 (编译失败就需要换版本,需要的版本在报错信息中可以看到) git clone http://github.com/brianfrankcooper/YCSB.git cd YCSB mvn -pl site.ycsb:redis-binding -am clean package 测试命令 测试按照下面链接建议的顺序执行 https://github.com/brianfrankcooper/YCSB . */ package site.ycsb.db; import redis.clients.jedis.Tuple; import site.ycsb.ByteArrayByteIterator ; import site.ycsb.ByteIterator; import site.ycsb.DB; import site.ycsb.DBException; import site.ycsb.Status
本博文的其余部分将详细介绍测试设置,选择数据集大小,然后使用这些数据集大小运行YCSB。 因此,我们选择了1TB的数据集大小, 将目标数据大小转换为YCSB参数在YCSB中,默认情况下一行为1KB,因此,根据加载到YCSB“用户表”中的行数,您可以轻松估算YCSB“用户表”表数据大小。 %更新 每个YCSB工作负载(A,C,F和UpdateOnly)各自运行15分钟,并且重复完整的运行5次,两次运行之间没有重新启动,以测量YCSB吞吐量*。 YCSB是一个开源规范和程序套件,用于评估计算机程序的检索和维护功能。 要使用YCSB来测试运营数据库的性能,请查看博客如何为HBase运行YCSB 原文作者:Surbhi Kochhar 原文链接:https://blog.cloudera.com/hbase-performance-testing-using-ycsb
这就是今天的主角YCSB。YCSB是Yahoo开源的一套分布式性能测试工具,方便易用,拓展性强。Ivan最近研究HBase二级索引时用它来做性能测试,感觉还是非常顺手的。 虽然网上已经有很多YCSB的介绍文章,但用来指导实际操作还是有些不便。Ivan会用两三篇文章来介绍一下YCSB的实际使用。 这个类是com.yahoo.ycsb包下抽象类DB的子类。在运行YCSB客户端时,你要通过命令行指定类名,客户端会动态加载你的接口类。 选择哪个阶段要看你运行YCSB命令行时指定的参数。 在运行YCSB客户端的命令行时,你可以指定java class和参数文件。 英文原文:YCSB
写在前面 本文只讲一个很简单的问题,YCSB对HBase集群的测试。虽然网上有很多介绍YCSB测试HBase的文章,但都是针对本地HBase伪分布式集群的。 如果你正在进行NoSQL数据库选型或者研发一款定制版Nosql数据库,那么YCSB一定是你居家旅行必备良药。 二次开发工作主要是com.yahoo.ycsb.DB的基础上定义自己的接口实现。 2、下载YCSB版本 Ivan选择的是YCSB0.13版本,如果使用master应该也是OK的,前文已经说过,这两个版本中HBase的访问接口是一样的。 wget https://github.com/brianfrankcooper/YCSB/archive/0.13.0-staging.zip 3、编译YCSB 执行进行编译。 更多YCSB介绍与测试命令可参考前文 NoSQL性能测试工具YCSB-Running a Workload
YCSB,全称为“Yahoo! 作为一名go开发人员,所以我们使用 pingcap 开发的Go YCSB来进行基准测试。 安装 首先要保证本地 Go 版本不低于 1.16,然后下载编译: git clone https://github.com/pingcap/go-ycsb.git cd go-ycsb make 在 bin 文件夹里面就放着我们编译好的程序 go-ycsb。 通过这种方式 Go YCSB 实现了 DB 的自定义化。
最近在对一些存储组件做性能测试,主要使用到了 YCSB,篇文章记录下。 什么是 YCSB YCSB,全称为“Yahoo! go-ycsb 雅虎的 YCSB 是 Java 语言实现的,且没有对 etcd 内置的支持,pingcap 使用 Go 仿照 Java 版本的 YCSB 实现了 go-ycsb,工作机制大体类似. ,以 go-ycsb 代码仓库提供的 workloads/workload_template 文件为例子: # 主要支持的配置项见: https://github.com/pingcap/go-ycsb 接下来使用 go-ycsb 准备压测数据: ./bin/go-ycsb load etcd -P workloads/etcd_offcial_workload 压测执行: . 参考 探究Go-YCSB做数据库基准测试 YCSB wiki - Running a Workload 中译版
• 自定义YCSB仅更新工作负载 o 我们的自定义YCSB仅更新的工作负载执行 • 100%UPDATE操作 o 应用示例是将指标存储 o 工作负载性能:CDP 7 YCSB仅更新的工作负载运行吞吐量 o 工作负载性能:CDP 私有云7.1 HBase2 YCSB工作负载吞吐量(每秒操作数)比CDH5 HBase1高15% • YCSB工作负载C(只读) o YCSB工作负载C是只读工作负载,可以执行 YCSB工作负载A :CDP 7 YCSB工作负载A的性能比CDH5 好15%。 YCSB工作负载C :CDP 7 YCSB只读工作负载C具有与CDH 5 类似的操作/吞吐量 在测试过程中,我们注意到在CDP 7中从JDK8升级到JDK 11可以使性能再提高10%。 • YCSB绑定版本hbase2(CDP-CD 7.1)和hbase1(CDH 5) • YCSB客户端使用了2 • 每个客户端的YCSB线程20 • YCSB表@ 1TB规模 • 数据大小 o
/ycsb? /ycsb? /ycsb? /ycsb? /ycsb?
在 MongoDB 上线之前,我们可能想知道它的极限是怎样的,这时,我们可以借助工具对 MongoDB 进行压测,这一节内容就来聊聊通过 YCSB 对 MongoDB 进行压测。 cd /usr/src curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.5.0/ycsb -0.5.0.tar.gz tar xfvz ycsb-0.5.0.tar.gz cd ycsb-0.5.0 4 编辑配置文件 vim workloads/workloada 修改如下内容: mongodb.url /bin/ycsb load mongodb -P workloads/workloada 进行压测: . /bin/ycsb run mongodb -P workloads/workloada 可看到如下结果: ......
这几天有人在我们自己的性能测试工具 go-ycsb (https://github.com/pingcap/go-ycsb/issues/26)上面问了这个问题,我才陡然发现,原来我们也有。 YCSB 对于第一个排队的例子,为了更好的计算 latency,YCSB 引入了一个 intended time 的概念,即记录下操作实际的排队时间。 我当初在看 YCSB 代码的时候,一直没搞明白为什么会有两种时间,而且也不知道 intended time 到底是什么,后来重新回顾了 coordinated omission 才清楚。 也就是说 YCSB 通过 intended time 来计算排队时间。 但 YCSB 还是没解决上面说的第二个问题,如果系统真的出现了卡主,测试客户端仍然会跟着卡主,因为是同步发送请求的。 Go YCSB 那么具体到 go-ycsb,我们如何解决这个问题呢?我现在唯一能想到的就是利用 Go 的 goroutine,按照一定的频率去生成 goroutine,执行测试。
YCSB(Yahoo! Cloud Serving Benchmark)是雅虎开源的用于测试新式数据库(主要为 NoSQL)性能的框架。 2.2 压测工具 1) YCSB官网下载可执行程序包,选择0.13.0版本; 2) 解压可执行程序包,假设解压后目录名称为ycsb-0.13.0 3) 复制腾讯云EMR实例中的HBase集群配置到ycsb 进入ycsb工作目录,执行如下命令: ```bin/ycsb load hbase12 -P workloads/workloada -threads 32 -p table=t -p columnfamily =c -s``` 3.2 选择Workload YCSB提供了6中不同类型的Workload. 3.3 配置其他参数 YCSB提供了丰富的参数配置接口。诸如压测节点工作线程数量,是否在控制台打印压测日志等。
本次测试采用的测试工具是YCSB,肯定很多人会问,为什么NoSQL测试工具那么多,为什么会选择YCSB呢? YCSB是Yahoo开发的一个专门用来对新一代数据库进行基准测试的工具。全名是Yahoo! Cloud Serving Benchmar。上图是YCSB的结构,可以看成是一个数据库客户端。 YCSB的包括以下几大特性: 支持常见的数据库读写操作,如插入,修改,删除及读取; 多线程支持,YCSB用Java实现,有很好的多线程支持; 灵活定义场景文件,可以通过参数灵活的指定测试场景; 数据请求分布方式多样 ,支持随机、Zipfian以及其他请求分布方式; 可扩展性强,可通过扩展Workload的方式来修改或者扩展YCSB的功能。 (500万、3000万、1亿); ④利用YCSB的S2~S5场景分别在3个测试集合上进行多线程测试; ⑤结果数据的分析。
Cloud Serving Benchmark (YCSB) 是一个Java语言实现的用于云端或者服务器端的数据库性能测试工具,其内部涵盖了常见的NoSQL数据库产品,如Cassandra、MongoDB wget https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-mongodb-binding-0.17.0.tar.gztar xvfz ycsb-mongodb-binding-0.17.0.tar.gzchown -R mongod:mongod ycsb-mongodb-binding-0.17.0默认的6种测试场景如下 0.6updateproportion=0scanproportion=0insertproportion=0.4requestdistribution=zipfianEOFTHREADS=100bin/ycsb workload_s6_load_${THREADS}.result 2>workload_s6_load.log&tail -100f workload_s6_load_${THREADS}.resultbin/ycsb
跟踪每个工作负载的唯一缓冲区地址 • 将它们映射到 STU(2 MB)较低页面 • 构建 ATC 的 Python 模型 • 重复追踪到模型以验证命中率 • 对尽可能多的工作负载和配置重复此过程 案例:YCSB 与YCSB相比,TPC-H测试的IO分布是有明显差异的,说明ATC命中率是和业务特征相关的。 相关性研究 STU大小 • 使用的基准测试:YCSB 工作负载 B(YCSB WL B) • 缓存:4 路组相联(4 way Set Associative) • 算法:轮询(Round Robin) 算法相关性 • 使用的基准测试:YCSB 工作负载 B(YCSB WL B) • 关联性:全关联和 4 路组相联 • 替换算法:LRU、随机(Rand)和轮询(Round Robin) • 结果: •
理解分层内存平衡 测试条件:使用Redis运行YCSB工作负载。 关于YCSB工作负载 YCSB(Yahoo! YCSB包含多种标准化的工作负载,这些工作负载模拟了实际应用中的不同数据访问模式,以测试系统在不同负载下的表现,例如读写性能、延迟和吞吐量等。
此外,所应用的基准测试工具是标准的 YCSB 基准测试,所有应用的配置选项都公开了。 DBaaS 集群范围从 3 到 18 个节点,这些节点按照三个可比较定价的扩展规模进行分类。 这些数据包含原始性能测量以及诸如 DBaaS 实例详细信息和用于运行 YCSB 实例的 VM 详细信息等附加元数据。即使没有 benchANT 平台,您也可以自行重现结果。 传感器工作负载基于 YCSB 及其默认数据模型,但操作分布为 90% 的插入操作和 10% 的读取操作,模拟真实的物联网(IoT)应用程序。该工作负载使用最新的请求分布模式执行。 对于 MongoDB,我们选择了确定的 8 个 YCSB 实例,每个 YCSB 实例有 100 个线程,并以均匀分布运行缓存工作负载 12 个小时,目标吞吐量为每秒 40 kOps。 对于 ScyllaDB,我们选择了确定的 16 个 YCSB 实例,每个 YCSB 实例有 200 个线程,并以均匀分布运行缓存工作负载 12 小时,目标吞吐量为每秒 500 kOps。
测试工具是YCSB(Yahoo! Cloud Serving Benchmark详细介绍见这里),使用YCSB的不同workload压力配置模版,模拟以下业务场景组合,对数据库进行压测。 测试数据库部署为单实例,测试客户端部署一个YCSB实例,YCSB发起多个并发线程对数据库进行压力测试。力测试。
https://github.com/tikv/tikv/blob/release-3.0/CHANGELOG.md 提升的性能 使用go-ycsb,我们将TiKV 3.0.0与TiKV 2.1.14进行了基准测试 我们测试了一个由3个TiKV节点、1个PD节点和1个运行YCSB的节点组成的集群。 https://github.com/pingcap/go-ycsb https://github.com/tikv/terraform-tikv-bench 我们使用的YCSB设置为: 1KB的价值大小
性能 我们使用YCSB 和Socialite两个基准比较了 DocumentDB 和Atlas的性能。 YCSB YCSB是“最小公分母”类型的基准,只使用主键查询。我们运行了三个YCSB工作负载,每个工作负载在两个数据集上。其中,一个数据集足够小,可以完全放在RAM中,而另一个则比RAM大得多。 在这个测试中, 我们发现,当我们试图在包含超过2亿个文档的数据集上运行DocumentDB时,DocumentDB在YCSB的加载阶段频繁崩溃。 与YCSB不同的是,Socialite只能针对MongoDB API运行,到目前为止还从未被用于MongoDB与其他数据库之间的比较,因此它没有针对Atlas进行过任何优化。 ?