性能测试工具-Shell

AHBench是由阿里云Lindorm团队研发的benchmark测试套件,支持一键测试Lindorm和HBase等集群性能。

介绍

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

准备工作

  • 在压测客户端部署在ECS,您需要确保云原生多模数据库 Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。ECS实例信息的查看方法请参见查看实例信息

    • 所在地域相同,并建议所在可用区相同(以减少网络延时)。

    • 网络类型相同。

      说明
      • 专有网络具有更高的安全性,建议使用专有网络。

      • 如果网络类型为专有网络,需确保使用相同的专有网络ID。

  • 将压测客户端IP地址添加至云原生多模数据库 Lindorm实例的白名单中,添加方法请参见设置白名单

  • 下载测试套件AHBench,并上传到压测客户端并解压。

注意事项

  • 测试压力过程中可能会使被测系统负载过高,请勿在生产环境中运行该测试工具。

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

  • 确保有足够测试集群的存储空间。

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

运行环境

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

  • Linux系统

  • JDK 1.8 +

  • Python 2.7

  • 建议客户端CPU配置为独享16Core以上

配置集群地址

AHBench/conf/hbase-site.xml中配置需要测试的Lindorm或HBase集群地址。

访问Lindorm可参考基于HBase Java API的应用开发。并在hbase-site.xml中增加配置以下参数。

<property>
  <name>hbase.client.connection.impl</name>
  <value>org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection</value>
</property>

配置环境变量

在AHBench/conf/ahbench-env.properties路径下配置工具运行的环境变量。

  1. 执行以下命令打开ahbench-env.properties文件。

    vi AHBench/conf/ahbench-env.properties
  2. 配置JDK的安装地址(例如:JAVA_HOME=/usr/java/jdk1.8.0/)。如果Java已经在系统PATH中,可以跳过该配置。

  3. 配置被测HBase集群的版本,如果为1.x版本则填1,如果为2.x版本则填2。

    HBASE_VERSION=2

配置测试相关参数(可选)

在AHBench/conf/ahbench-settings.properties路径下配置测试相关的参数,如压缩、编码、线程数、数据量、字段大小等,默认不需要修改,如有需求可根据场景进行定制修改。

说明

部分参数仅在特定Lindorm版本支持,如ZSTD压缩和INDEX编码仅在云Lindorm支持,你可以通过配置ZSTD和INDEX获得更好的性能。

# 配置被测表的压缩算法,可选项有:
# NONE LZO ZSTD SNAPPY GZ LZ4 ZSTD 等
# 注意部分被测系统可能不支持指定的压缩算法
# 云Lindorm推荐使用ZSTD
ahbench.table.compression=SNAPPY

# 配置被测表的编码算法,可选项有:
# NONE DIFF INDEX
# 注意部分被测系统可能不支持指定的编码算法
# 云Lindorm推荐使用INDEX
ahbench.table.encoding=DIFF
            

启动测试

  • 快速测试集

    测试数据量1000万,整体运行时间大约40分钟(视被测系统可能有变化),至少需要总存储空间20 GB。

    cd AHBench
    ./fast_test                 
  • 完整测试集

    测试数据量20亿,整体运行时间大约25小时(视被测系统可能有变化),至少需要总存储空间2 TB。

    cd AHBench
    ./full_test
                        

    若要重复进行该测试,可以通过跳过数据导入阶段(上一次测试已成功运行),减少运行时间。跳过导入阶段,整体测试运行时间大约3.5小时(视被测系统可能有变化)。

    cd AHBench
    ./full_test --skipload
                        

测试结果分析

测试完成后,会在当前目录生成CSV文件。CSV(Comma-Separated Values)文件全称为逗号分隔值文件。可以将测试结果复制到Excel、Numbers等数据分析软件中做进一步对比分析。

  1. 查看CSV文件的名称。

    ls -ltr
  2. 查看指定CSV文件的内容。

    cat full_throughput.csv

CSV文件内容如图所示。

csvwenjian

常见问题

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

  • JAVA_HOME是否正确设置,是否安装了Python运行环境。

  • 被测集群地址是否填写正确。

  • 被测集群HBase版本是否填写正确。

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

  • 被测集群状态是否正常服务。