性能测试工具-图形工具

AHBench-jenkins是由阿里云Lindorm团队研发的Benchmark测试套件。该测试套件集成了YCSB(Yahoo! Cloud Serving Benchmark)工具,YCSB提供了测试集合、测试流程控制、结果汇聚等功能。使用该测试套件,您可以通过简单配置,一键执行性能测试。本文介绍如何在ECS上安装AHBench-jenkins测试套件并完成性能测试。

运行环境

请确保ECS实例满足以下条件:

  • 云原生多模数据库 Lindorm实例位于同一专有网络。

  • (建议)ECS实例规格为16vCPU及以上。

  • Linux系统。

  • JDK 1.8及以上版本。

  • Python 2.7。

注意事项

  • 测试压力过程中可能会使得被测实例负载过高,请勿在生产环境中运行该测试套件。

  • 该测试套件同一时间只能运行一个测试集,测试集内部测试任务串行执行。请确保没有并行执行其他测试任务。

  • 该测试套件使用"ahbenchtest-read"与"ahbenchtest-write" 两个表作为测试用表。测试过程中可能会删除再创建这两张表。请确保这两张表可以安全地被删除。

  • 确保被测实例有足够的存储空间。

  • ECS为虚拟运行环境,同一机型下的性能测试结果可能存在5%~10%的波动,处于预期范围之内。

  • 启动服务前,确保已配置ECS安全组,并允许来自HTTP 8080端口的入站访问,否则将无法顺利连接ECS实例。

准备工作

  • 将ECS实例的主私网IP添加至云原生多模数据库 Lindorm实例的白名单中,添加方法请参见设置白名单

  • 配置ECS安全组,并放行8080端口的入站访问。

  • 下载测试套件AHBench-jenkins,并上传到ECS实例解压。

步骤一:启动服务

  1. 启动AHBench-jenkins服务。

# 通过如下命令可以设置该套件的端口,默认为8080
cd AHBench-jenkins-v1.0.0
./start.sh 8080
  1. 在浏览器中输入ECS公网地址和AHBench-jenkins服务的端口号来访问服务。格式为:https://<ip>:<port>。

https://47.96.XX.XX:8080

步骤二:选择测试集模板

  1. 单击测试集模板。

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

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

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

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

步骤三:配置测试任务

必填配置

Lindorm

参数

参数说明

获取路径

cluster_addr

Lindorm实例宽表引擎的HBase Java API访问地址。

Lindorm控制台数据库连接页面,单击宽表引擎,可查看HBase Java API访问地址。

如果AHBench-jenkins部署在同VPC的ECS上,请使用专有网络地址,否则请开通并使用公网地址。

username

访问Lindorm实例的数据库用户。

请确认该用户具有全局权限的read、write、admin、trash以及system权限。

在集群管理系统,单击数据管理 > 用户管理,可以为用户授权。详情请参见登录集群管理系统管理ACL权限

password

访问Lindorm实例的数据库密码。

如果忘记数据库密码,可在宽表引擎的集群管理系统,单击数据管理 > 用户管理,修改密码。详情请参见登录集群管理系统管理用户

HBase增强版

参数

参数说明

获取路径

cluster_addr

HBase增强版实例的Java API访问地址。

HBase控制台数据库连接页面,在连接信息区域可查看Java API访问地址

如果AHBench-jenkins部署在同VPC的ECS上,请使用专有网络地址,否则请申请并使用外网地址。

username

访问HBase增强版实例的数据库用户。

请确认该用户具有全局权限的read、write、admin、trash以及system权限。

在集群管理系统,单击数据管理 > 用户管理,可以为用户授权。详情请参见登录集群管理系统管理ACL权限

password

访问HBase增强版实例的数据库密码。

如果忘记数据库密码,可在宽表引擎的集群管理系统,单击数据管理 > 用户管理,修改密码。详情请参见登录集群管理系统管理用户

HBase标准版

参数

参数说明

获取路径

cluster_addr

HBase标准版实例的ZK链接地址。

HBase控制台数据库连接页面,连接信息区域可查看Java API访问地址

如果AHBench-jenkins部署在同VPC的ECS上,请使用专有网络地址,否则请申请并使用外网地址。

通用配置(可选)

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

参数名称

参数说明

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

顺序运行的测试用例,可以根据需要选择要运行的用例。

  • 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中支持,您可以通过配置ZSTD和INDEX获得更好的性能。

  • 若要重复进行该测试,您可以通过取消re_create_tablepre_load来跳过重新建表和数据导入阶段(上一次测试已成功运行)。跳过导入阶段,整体测试运行时间大约3.5小时(视被测实例规格可能有变化)。

步骤四:启动测试

单击BUILD按钮,如下图所示,提交测试任务到执行队列中。

qidongceshi

步骤五:测试结果分析

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

ceshijieguo

您可以将数据结果复制到Excel或者Numbers等数据分析软件中做进一步对比分析。CSV文件结果如图所示。

wenjianjieguo

常见问题

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

  • Java和Python是否安装,版本是否正确。

  • 被测实例地址以及必填配置是否填写正确。

  • 被测实例是否支持测试所指定的压缩算法。

  • 被测实例状态是否正常服务。