---
title: 运行测试
description: "1. 进入安装路径。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/testguide/tstg/kunpengycsbformong_11_0003.html
sourcePath: /source/zh/kunpengdbs/testguide/tstg/kunpengycsbformong_11_0003.html
indexId: d83320f5f5c8028675f6137393d750fc17eaaed0eaf7303201a505772e66f20c68
---
# 运行测试

1. 进入安装路径。
```
cd YCSB-0.15.0
```

主要目录说明：

  - bin：目录下有个可执行的YCSB文件，是用户操作的命令行接口。YCSB主逻辑是：解析命令行、设置Java环境、加载Java-libs、封装成可以执行的Java命令，并执行。
  - workloads：目录下有各种workload的模板，可以基于workload模板进行自定义修改。
默认的6种测试场景如下：

  - workloada：读写均衡型，50%/50%，Reads/Writes
  - workloadb：读多写少型，95%/5%，Reads/Writes
  - workloadc：只读型，100%，Reads
  - workloadd：读最近写入记录型，95%/5%，Reads/insert
  - workloade：扫描小区间型，95%/5%，scan/insert
  - workloadf：读写入记录均衡型，50%/50%，Reads/insert
  - workload_template：参数列表模板
2. 压测配置。
  选择需要测试的测试场景，编辑对应的配置文件，以读写测试为例：

  1 vi workloads/workloada

  配置文件的具体参数项如下：

**表1 配置文件具体参数**

| 参数项 | 参数具体含义 |
| --- | --- |
| recordcount | YCSB load阶段加载的记录条数 |
| operationcount | YCSB run阶段执行的操作总数 |
| workload | workload实现类 |
| readallfields | 查询时是否读取记录的所有字段 |
| readproportion | 读操作的百分比 |
| updateproportion | 更新操作的百分比 |
| scanproportion | 插入操作的百分比 |
| requestdistribution | 请求分布模式，uniform、zipfian和latest三种分布模式 |
| mongodb.url | 待测试mongo实例的连接地址 须知： 此项为添加项。 |
| mongodb.database | 测试时使用的数据库名称，默认为ycsb 须知： 此项为添加项。 |


3. 加载数据。
```
bin/ycsb load mongodb -threads 100 -P workloads/workloada
```

图1 加载数据回显图2 加载数据回显
返回字段Return=OK，则表示数据导入成功。
命令参数说明：
ycsb [command] [database] [options]

  - command选项：
    load：载入测试数据。

    run：执行测试过程。

    shell：交互模式。


  - database选项：指定测试的数据库场景，例如mongodb、cassandra、memcached等。
  - options选项：
    -P file ：指定workload文件，相对路径或者绝对路径。

    -cp path ：指定额外的Java classpath。

    -jvm-args args ：指定额外的JVM参数。

    -p key=value ：设置ycsb配置项，会覆盖workload文件的配置项。

    -s ：运行时的中间状态打印到stderr中。

    -target n ：表示1s中总共的操作次数。

    -threads n ：设置ycsb client的并发测试线程数，默认是1，单线程。

4. 执行测试。
  1 bin/ycsb run mongodb -threads 100 -P workloads/workloada

  图3 执行测试回显

  图4 执行测试回显

  返回字段Return=OK，则表示测试完成，取“[OVERALL],Throughput”值作为测试指标。

  [OVERALL], RunTime(ms), 1123 # 测试过程耗时（毫秒）

  [OVERALL], Throughput(ops/sec), 8904.719501335709 # 测试过程中的吞吐量（ops/sec）

  [READ], Operations, 5020 # 执行read操作的总数

  [READ], AverageLatency(us), 4126.0304780876495 # 每次read操作的平均时延（微秒）

  [READ], MinLatency(us), 299 # 每次read操作的最小时延（微秒）

  [READ], MaxLatency(us), 168959 # 每次read操作的最大时延（微秒）

  [READ], 95thPercentileLatency(us), 6659 # 95% read操作的时延在6659微秒以内

  [READ], 99thPercentileLatency(us), 157311 # 99% read操作的时延在157311微秒以内

  [READ], Return=OK, 5020 # 返回成功，操作数5020

  [UPDATE], Operations, 4980 # 执行update操作的总数

  [UPDATE], AverageLatency(us), 3846.1317269076303 # 每次update操作平均时延（微秒）

  [UPDATE], MinLatency(us), 321 # 每次update操作的最小时延（微秒）

  [UPDATE], MaxLatency(us), 168575 # 每次update操作的最大时延（微秒）

  [UPDATE], 95thPercentileLatency(us), 6555 # 95% update操作的时延在6555微秒以内

  [UPDATE], 99thPercentileLatency(us), 26351 # 99% update操作的时延在26351微秒以内

  [UPDATE], Return=OK, 4980 # 返回成功，操作数4980
