性能测试工具-图形工具

更新时间:
复制为 MD 格式

AHBench-jenkins是由阿里云HBase团队研发的benchmark测试套件。本文介绍AHBench-jenkins测试套件的使用和注意事项。

介绍

该测试套件集成了YCSB(Yahoo! Cloud Serving Benchmark)工具,YCSB提供了测试集合、测试流程控制、结果汇聚等功能。借助该测试套件,您可以通过简单配置,一键执行性能测试。

准备工作

注意事项

  • 测试压力可能将被测集群负载过高,请勿在生产环境中运行该测试套件。
  • 该测试套件同一时间只能运行一个测试集,测试集内部测试任务串行执行。请确保没有并行执行不同测试集的测试任务。
  • 该测试套件使用"ahbenchtest-read"与"ahbenchtest-write" 两个表作为测试用表。测试过程中可能会删除再创建这两张表。请确保这两张表可以安全地被删除。
  • 确保测试集群有足够的存储空间。
  • ECS为虚拟运行环境,同一机型下的性能测试结果可能存在5%~10%的波动,处于预期范围之内。

运行环境

请确保压测客户端运行环境满足:

  • Liune系统
  • JDK 1.8 +
  • python 2.7
  • 建议客户端CPU配置为独享16Core以上

启动服务

启动AHBench-jenkins服务后,您可以通过在浏览器中输入目标地址(例如:HTTP://IP:PORT) 来访问服务。

# 通过如下命令可以设置该套件的端口,默认为80
cd AHBench-jenkins
./start.sh 8080

选择测试集模板

测试集模板包括快速测试集(FastTest)和完整测试集(FullTest)。

  • 快速测试集:测试数据量1000万,整体运行时间大约2小时(视被测集群规格可能有变化),至少需要总存储空间20 GB。
  • 完整测试集:测试数据量20亿,整体运行时间大约25小时(视被测集群规格可能有变化),至少需要总存储空间2 TB。

配置测试任务

选择测试模板后,您可以单击左侧菜单栏Build with Parameters来配置测试任务。

配置集群地址

您可以通过cluster_addr参数配置集群地址。配置方式和路径如下表所示。

配置方式 cluster_addr参数说明 获取路径
HBase标准版 HBase标准版集群的ZK链接地址。 控制台页面 > 数据库连接 > 连接信息(注意区分专有网络和外网地址)。
HBase增强版 HBase增强版集群的Java API访问地址。
Lindorm Lindorm集群宽表引擎的HBase Java API访问地址。 控制台页面 > 数据库连接 > 宽表引擎(注意区分专有网络和外网地址)。

专有配置说明(可选)

不同配置方式中的参数说明如下表所示。
配置方式 参数说明
HBase标准版 cluster_version:HBase标准版集群版本。

如果为1.x版本则填1。如果为2.x版本则填2。默认值为2。

HBase增强版
  • username:访问HBase增强版集群的数据库用户,请先对该账号进行授权。
  • password:访问HBase增强版的数据库密码,请先对该账号进行授权。
Lindorm
  • username:访问Lindorm集群的数据库用户,请先对该账号进行授权。
  • password:访问Lindorm集群的数据库密码,请先对该账号进行授权。

通有配置说明(可选)

以下配置测试相关的参数,如压缩、编码、线程数、数据量、字段大小、测试用例等。默认不需要修改,如有需求可根据场景进行定制修改。

参数名称 参数说明
test_name 测试名称,只用作显示。
table_name 测试用表名称,用于测试过程中读写数据。
row_len 每行数据的主键长度。
col_num 每行数据中列的个数。
col_len 每个列的长度。
re_create_table 表示是否要重建新表。
compression 表的压缩算法。支持的压缩算法包括NONE、LZO、SNAPPY、GZ、LZ4ZSTD。
说明 ZSTD仅在HBase增强版和Lindorm中支持。
encoding 表的编码算法。支持的编码算法包括NONE、DIFFINDEX。
说明 INDEX仅在HBase增强版和Lindorm中支持。
regions 预分区数目。
pre_load 是否要预加载数据,只有预加载写入的数据才能进行读相关的测试。
load_params 预加载的相关参数,并发线程、限速(每秒目标操作数)和加载行数。
load_wait 预加载后的等待时间。
warm_up 是否在测试前进行预热读。
warm_up_params 预热的相关参数,并发线程、运行时间(秒)和读取范围。
threads 并发测试线程数。
exec_time 每个测试用例的运行时间。
recordcount 用以读测试的Key范围集。
batch_rows 批量读写的行数。
scan_rows 单次scan的行数。
interval_time 测试用例的间隔等待时间。
case1-case10 顺序运行的测试用例,可以根据需要选择要运行的用例。
  • none:不运行该测试用例。
  • singleread:随机只读。
  • uniformsinglewrite:单行写。
  • uniformscan:范围读,uniform。
  • batchwrite: 批量写,uniform。
  • workload-a:随机读+随机写混合,50:50,zipfan。
  • workload-b:随机读+随机写混合,95:5,zipfan。
  • workload-c:只读,zipfan。
  • workload-d:随机读+随机写混合,95:5,latest。
  • workload-e:范围读+随机写混合,95:5,zipfian。
  • workload-f:随机读+读后修改混合,50:50,zipfian。
说明
  • 部分参数仅在特定HBase版本支持,例如ZSTD压缩算法和INDEX编码算法仅在HBase增强版和Lindorm中支持,您可以通过配置ZSTDINDEX获得更好的性能。
  • 若要重复进行该测试,您可以通过取消re_create_tablepre_load来跳过重新建表和数据导入阶段(上一次测试已成功运行)。跳过导入阶段,整体测试运行时间大约3.5小时(视被测集群规格可能有变化)。

启动测试

单击开始构建按钮,提交测试任务到执行队列中。

构建参数包括:recordcount(读测试的key范围集,示例值 10000000)、batch_rows(批量读写的行数,示例值 100)、scan_rows(单次Scan的行数,示例值 100)、interval_time(case之间的间隔等待时间,单位为秒,示例值 600)。case1case10 下拉框用于选择测试用例,可选项包括 singleread(随机只读 uniform)、singlewrite(随机只写 uniform)、scan、batchwrite、workload-a(随机读+随机写混合 50:50 zipfan)、workload-b 至 workload-f 等 YCSB 标准负载模式。配置完成后单击 开始构建 按钮提交测试任务。

测试结果分析

测试用例运行完毕后,会生成CSV文件,您可以通过浏览器进行查看和下载。

生成的 CSV 文件包括 batchwrite.csvscan.csvsingleread.csvsinglewrite.csvtotal_result.csv 以及 workloada.csvworkloadf.csv 等工作负载结果文件,在 Jenkins 构建详情页的构建产生文件区域单击 view 即可查看对应文件内容。

CSV(Comma-Separated Values)文件全称为逗号分隔值文件。您可以将数据结果复制到Excel/Numbers等数据分析软件中做进一步对比分析。CSV文件结果如下所示。

TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
batchwrite,BATCH,101437.0,125750.6753771419,210431.0,254463.0,314111.0
scan,SCAN,1655724.0,7704.259769699419,21295.0,58655.0,85887.0
singleread,READ,75501.0,1689.6162362271912,2044.0,2669.0,22415.0
singlewrite,INSERT,42512.0,3001.4856138550078,4483.0,9263.0,50271.0
workloada,READ,26010.0,1996.9924856520854,2789.0,4135.0,27535.0
workloada,UPDATE,26011.0,2907.7582520171654,3963.0,5891.0,31071.0
workloadb,READ,59728.0,1989.3114753677578,2771.0,3699.0,19631.0
workloadb,UPDATE,3150.0,2770.810318072335,4025.0,5311.0,22783.0
workloadc,READ,67388.0,1892.5555709970954,2555.0,3433.0,17103.0
workloadd,READ,61513.0,1926.9758923129186,2717.0,3705.0,15391.0
workloadd,INSERT,3237.0,2781.8499603085943,4055.0,5623.0,18815.0
workloade,INSERT,188.0,4851.740461394097,13071.0,48319.0,109183.0
workloade,SCAN,349277.0,26626.44060447983,68415.0,417535.0,463615.0
workloadf,READ,28806.0,2688.784531208804,4383.0,10071.0,55967.0
workloadf,UPDATE,14402.0,3481.2656232319496,5551.0,8895.0,55455.0
workloadf,READ-MODIFY-WRITE,14402.0,6398.633906954003,9551.0,24639.0,66623.0

常见问题

如果测试中遇到错误退出,请检查如下事项:

  • JAVAPython是否安装,版本是否正确。
  • 被测集群地址以及专用配置是否填写正确。
  • 被测集群是否支持测试所指定的压缩算法。
  • 被测集群状态是否正常服务。