AHBench-jenkins是由阿里云HBase团队研发的benchmark测试套件。本文介绍AHBench-jenkins测试套件的使用和注意事项。
介绍
该测试套件集成了YCSB(Yahoo! Cloud Serving Benchmark)工具,YCSB提供了测试集合、测试流程控制、结果汇聚等功能。使用该测试套件,您可以通过简单配置,一键执行性能测试。
准备工作
- 在压测客户端部署在ECS,您需要确保云原生多模数据库Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。ECS实例信息的查看方法请参见查看实例信息。
- 所在地域相同,并建议所在可用区相同(以减少网络延时)。
- 网络类型相同。
说明
- 专有网络具有更高的安全性,建议使用专有网络。
- 如果网络类型为专有网络,需确保使用相同的专有网络ID。
- 将压测客户端IP地址添加至云原生多模数据库Lindorm实例的白名单中,添加方法请参见设置白名单。
- 下载测试套件AHBench-jenkins,并上传到压测客户端并解压。
注意事项
- 测试压力过程中可能会使得被测实例负载过高,请勿在生产环境中运行该测试套件。
- 该测试套件同一时间只能运行一个测试集,测试集内部测试任务串行执行。请确保没有并行执行不同测试集的测试任务。
- 该测试套件使用"ahbenchtest-read"与"ahbenchtest-write" 两个表作为测试用表。测试过程中可能会删除再创建这两张表。请确保这两张表可以安全地被删除。
- 确保测试实例有足够的存储空间。
- ECS为虚拟运行环境,同一机型下的性能测试结果可能存在5%~10%的波动,处于预期范围之内。
运行环境
请确保压测客户端运行环境满足以下条件:
- Linux系统
- JDK 1.8+
- Python 2.7
- 建议客户端CPU配置为独享16Core以上
启动服务
启动AHBench-jenkins服务后,您可以通过在浏览器中输入目标地址(例如:HTTP://IP:PORT) 来访问服务。
# 通过如下命令可以设置该套件的端口,默认为8080
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增强版 |
|
Lindorm |
|
通有配置说明(可选)
以下配置测试相关的参数,如压缩、编码、线程数、数据量、字段大小、测试用例等。默认不需要修改,如有需求可根据场景进行定制修改。
参数名称 | 参数说明 |
---|---|
test_name | 测试名称,只用作显示。 |
table_name | 测试用表名称,用于测试过程中读写数据。 |
row_len | 每行数据的主键长度。 |
col_num | 每行数据中列的个数。 |
col_len | 每个列的长度。 |
re_create_table | 表示是否要重建新表。 |
compression | 表的压缩算法。支持的压缩算法包括NONE、LZO、SNAPPY、GZ、LZ4和ZSTD。
说明 ZSTD仅在HBase增强版和Lindorm中支持。
|
encoding | 表的编码算法。支持的编码算法包括NONE、DIFF和INDEX。
说明 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 | 顺序运行的测试用例,可以根据需要选择要运行的用例。
|
说明
- 部分参数仅在特定HBase版本支持,例如ZSTD压缩算法和INDEX编码算法仅在HBase增强版和Lindorm中支持,您可以通过配置ZSTD和INDEX获得更好的性能。
- 若要重复进行该测试,您可以通过取消re_create_table和pre_load来跳过重新建表和数据导入阶段(上一次测试已成功运行)。跳过导入阶段,整体测试运行时间大约3.5小时(视被测实例规格可能有变化)。
启动测试
单击开始构建按钮,如下图所示,提交测试任务到执行队列中。
测试结果分析
测试用例运行完毕后,会生成CSV文件,如下图所示,您可以通过浏览器进行查看和下载。
CSV(Comma-Separated Values)文件全称为逗号分隔值文件。您可以将数据结果复制到Excel或者Numbers等数据分析软件中做进一步对比分析。CSV文件结果如图所示。
常见问题
如果测试中遇到错误退出,请检查如下事项:
- Java和Python是否安装,版本是否正确。
- 被测实例地址以及专用配置是否填写正确。
- 被测实例是否支持测试所指定的压缩算法。
- 被测实例状态是否正常服务。