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


    转自: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
     
  • 相关阅读:
    mysql数据库管理工具(navicat for mysql)
    一次测试岗位针对Java和接口的面试题
    接口测试 rest-assured 使用指南
    简单实现接口自动化测试(基于python+unittest)
    负载测试、压力测试和性能测试的异同
    【Excle数据透视表】如何新建数据透视表样式
    【Excle数据透视表】如何为数据透视表应用样式
    【Linux】Linux删除指定文件夹下面 名称不包含指定字符的文件
    【Excle数据透视表】如何水平并排显示报表筛选区域的字段
    【Excle数据透视表】如何在数据透视表中使用合并单元格标志
  • 原文地址:https://www.cnblogs.com/bonelee/p/6282795.html
Copyright © 2020-2023  润新知