YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
转自:http://blog.sina.com.cn/s/blog_48c95a190102v9kg.html
        YCSB(Yahoo! Cloud Serving Benchmark)是雅虎开源的一款通用的性能测试工具。通过这个工具我们可以对各类NoSQL产品进行相关的性能测试,包括:HBase、 Cassandra、Mongodb、Voldemort、Redis等。通过配置workload文件,YCSB可以灵活的模拟不同的测试负载和读写模 式,以下为YCSB测试Mongo性能步骤的简单总结。
 
       首先,下载YCSB。在YCSB的github项目下可以查看和下载最新源码和所有Tag版本,目前最新的Tag版本为 0.1.4(https://github.com/brianfrankcooper/YCSB/archive/0.1.4.zip)。下载后的 ycsb-0.1.4.zip解压缩后即可直接使用,无需编译安装。在解压后的目录下,主要使用的两个目录是bin和workloads,前者包含了 ycsb可执行文件,后者包含了工具自带的各类workload文件。

       其次,配置YCSB。在使用YCSB对Mongodb进行压 力测试前,必须进行一些必要的配置。可以根据测试需要选择workloads目录下的任意已有workload文件,添加待测试的mongo实例信息。这 里假定使用workloada文件,且待测试的mongo实例运行在本地的27017端口上,那么相应的配置文件内容如下:
mongodb.url=mongodb://localhost:27017 # 待测试mongo实例的数据库地址
mongodb.database=ycsb # 测试时使用的数据库名称
mongodb.writeConcern=normal # 写入安全性为常规
recordcount=10000000 # 测试数据集的记录条数
operationcount=10000000 # 测试过程中执行的操作总数
workload=com.yahoo.ycsb.workloads.CoreWorkload # workload实现类
readallfields=true # 查询时是否读取记录的所有字段
readproportion=0.5 # 读操作的百分比
updateproportion=0.5 # 更新操作的百分比
scanproportion=0 # 扫描操作的百分比
insertproportion=0 # 插入操作的百分比 
requestdistribution=zipfian # 请求分布模式
 
       再次,运行YCSB。YCSB的运行分为两个阶段:测试数据加载阶段和测试操作执行阶段,前者用来加载测试数据集,后者用来执行正真的测试操作,两个阶段都要使用上面的配置文件。数据加载的执行命令为:./bin/ycsb load mongodb -threads 100 -P workloads/workloada,即根据workloada的配置要求启动100个线程并发加载测试数据,在执行完成后YCSB会打印出类似于下面的数据加载性能统计数据:
[OVERALL], RunTime(ms), 905346.0 # 数据加载所用时间(毫秒)
[OVERALL], Throughput(ops/sec), 11045.500836144412 # 加载操作的吞吐量(ops/sec)
[INSERT], Operations, 10000000 # 执行insert操作的总数
[INSERT], AverageLatency(us), 9024.8155659 # 每次insert操作的平均延时(微秒)
[INSERT], MinLatency(us), 139 # 所有insert操作的最小延时(微秒)
[INSERT], MaxLatency(us), 1022876 # 所有insert操作的最大延时(微秒)
[INSERT], 95thPercentileLatency(ms), 27 # 95%的insert操作延时在27毫秒以内
[INSERT], 99thPercentileLatency(ms), 42 # 99%的insert操作延时在42毫秒以内
[INSERT], Return=0, 10000000 # 成功返回数10000000
[INSERT], 0, 3793117 # 以下insert操作在各个延时时间区域的分布情况
[INSERT], 1, 37171
[INSERT], 2, 8035
[INSERT], 3, 6294
...
[INSERT], 999, 0
[INSERT], >1000, 5
执行压力测试的命令为:./bin/ycsb run mongodb -threads 100 -P workloads/workloada,即根据workloada的配置要求启动100个线程并发执行测试操作,在执行完成后YCSB会打印出类似于下面的性能统计数据,统计项说明可参照上文:
[OVERALL], RunTime(ms), 526774.0
[OVERALL], Throughput(ops/sec), 18983.472988416284
[UPDATE], Operations, 500675
[UPDATE], AverageLatency(us), 6493.521553902232
[UPDATE], MinLatency(us), 147
[UPDATE], MaxLatency(us), 1096742
[UPDATE], 95thPercentileLatency(ms), 18
[UPDATE], 99thPercentileLatency(ms), 62
[UPDATE], Return=0, 500675
[UPDATE], 0, 62719
[UPDATE], 1, 69850
...
[UPDATE], 999, 0
[UPDATE], >1000, 16
[READ], Operations, 9499325
[READ], AverageLatency(us), 5173.494588510236
[READ], MinLatency(us), 87
[READ], MaxLatency(us), 1113170
[READ], 95thPercentileLatency(ms), 17
[READ], 99thPercentileLatency(ms), 54
[READ], Return=0, 9499325
[READ], 0, 3394330
[READ], 1, 1187011
...
[READ], 999, 1
[READ], >1000, 294
 













本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6282795.html ,如需转载请自行联系原作者


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
105 2
|
28天前
|
监控 测试技术 PHP
性能和压力测试
【10月更文挑战第10天】性能和压力测试
110 60
|
1月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
19 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
29天前
|
NoSQL 关系型数据库 MongoDB
Django与MongoDB搭建高效的Web应用
Django与MongoDB搭建高效的Web应用
26 1
|
2月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
24天前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
27 0
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:确保质量与性能的平衡之道
【9月更文挑战第24天】在软件开发的海洋中,测试是导航灯塔,指引着项目安全抵达质量的彼岸。本文将深入探讨软件测试的核心原则、方法论以及如何通过精心设计的测试策略来保障产品的可靠性和性能。我们将从测试的基础知识出发,逐步深入到高级测试技巧,最终展示如何通过实际案例来应用这些知识以确保软件的成功交付。
|
2月前
|
测试技术 Python
软件测试的艺术:确保质量与性能
【9月更文挑战第19天】在数字化时代,软件已成为我们生活的一部分。然而,随着软件复杂性的增加,如何确保其质量和性能成为了一个挑战。本文将探讨软件测试的重要性,介绍常见的测试类型和策略,并提供实用的代码示例来帮助读者更好地理解和应用这些测试方法。无论你是开发人员、测试工程师还是项目管理者,这篇文章都将为你提供有价值的见解和技巧。
|
1月前
|
存储 关系型数据库 MySQL
四种数据库对比MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
四种数据库对比 MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
下一篇
无影云桌面