AnalyticDB PostgreSQL版支持通过PTS进行性能测试,本文介绍如何通过PTS对AnalyticDB PostgreSQL版实例进行性能测试。

背景信息

性能测试PTS(Performance Testing Service)是一款简单易用,具备强大的分布式压测能力的SaaS压测平台。PTS支持按需发起百万并发、千万TPS流量的压测任务,100%兼容JMeter,提供场景编排、API调试、流量定制、流量录制等功能,可快速创建业务压测脚本,精准模拟不同量级用户访问业务系统,帮助业务快速提升系统性能和稳定性。

费用说明

  • PTS在使用过程中会产生费用,具体信息,请参见计费概述
  • AnalyticDB PostgreSQL版实例的费用,请参见产品定价

前提条件

  • 开通性能测试PTS服务,具体信息,请参见开通方式
  • 已创建AnalyticDB PostgreSQL版实例,创建方式,请参见创建实例

    本次最佳实践中使用的实例的资源类型为存储弹性模式,引擎版本为6.0。

  • AnalyticDB PostgreSQL版实例已加载样本数据库,加载方式,请参见管理样本数据集

    样本数据集的具体信息以及示例查询语句,请参见数据集信息和示例查询

  • AnalyticDB PostgreSQL版的白名单已添加PTS所在的网段。

    本次示例中,AnalyticDB PostgreSQL版与PTS在同一VPC中,您可以将VPC网段添加至白名单中,设置白名单的操作,请参见设置白名单

性能测试

OLAP场景压力测试

  1. 登录性能测试PTS控制台
  2. 在左侧导航栏中选择性能测试 > 创建场景
  3. 创建场景页面,单击PTS压测
  4. 场景名右侧输入场景名称。
  5. 场景配置页签,进行以下配置:
    1. 单击删除图表图标,删除默认的压测API。
    2. 将鼠标移动到添加压测节点右侧的下拉图表图标上,单击JDBC压测节点
    3. 单击新建的压测API右侧的折叠图表图标,配置基本请求信息
      基本请求信息
      参数说明
      API名称自定义API名称。
      数据库类型选择PostgreSQL。
      数据库URL格式为{HOSTNAME}:{PORT}/{DBNAME},获取{HOSTNAME}:{PORT}的方式如下:
      1. 登录云原生数据仓库AnalyticDB PostgreSQL版控制台
      2. 在控制台左上角,选择实例所在地域。
      3. 找到目标实例,单击实例ID。
      4. 基本信息页面的数据库连接信息,即可获取连接地址和端口。连接地址

        您可以根据需求选择内网地址或外网地址。

      {DBNAME}adb_sampledata_tpch

      数据库URL示例如下:gp-bp1vgqague4lt****-master.gpdb.rds.aliyuncs.com:5432/adb_sampledata_tpch

      用户名AnalyticDB PostgreSQL版示例的数据库账号和密码,获取方式请参见创建数据库账号
      密码
      SQL待执行的SQL语句,本次示例使用了TPC-H的22条查询语句,查询语句具体内容,请参见示例查询
      说明 每个压测节点仅包含一条查询语句。
      超时时间接口的响应超时时间,本次示例取值为50000。
      limit查询语句的最大读取行数,最大值为1000000,本次示例取值为1000。
    4. 单击连接池配置,配置如下信息。
      连接池配置
      参数说明
      初始化连接数初始化时建立的物理连接数量,本次示例取值为1。
      获取连接最大等待时间从连接池中获取空闲连接的等待事件,单位为毫秒,本次示例取值为4000。
      最大连接数最大活跃连接数量和最小活跃连接数量,用以匹配单并发与多并发的多种测试场景。本次示例最大连接数为15,最小连接数为1。
      最小连接数
    5. 重复步骤b到步骤d,分别为22条查询语句各创建一个压测节点。
  6. 单击施压配置页签,配置压测模式配置
    压测模式配置
    参数说明
    压力来源选择PTS的网络类型,本次示例为阿里云VPC内网
    VPC信息选择PTS的VPC、安全组以及vSwitch。
    说明
    • PTS的VPC和vSwitch需要与AnalyticDB PostgreSQL版实例的VPC和vSwitch一致。
    • 如需新建安全组,请参见创建安全组
    压力模式选择并发模式(虚拟用户模式)
    递增模式选择自动递增
    最大并发设置为您希望达到的最大并发,本次示例为15。
    递增百分比每次增加并发时的增幅,本次示例为20%。
    单量级持续时长每个并发数的测试时长,本次示例为20分钟。
    压测总时长总测试时长,本次示例为100分钟。
    指定IP数指定发起压测流量的IP地址数量,即施压机器的数量。本次示例为1。
  7. 为防止正式压测时由于人为配置错误导致压测失败,可以单击场景调试对测试整个串联链路中各个查询的连通性。
    如果出现异常,则表示压测API配置可能出错,建议检查并进行修改。
  8. 场景调试通过后,单击保存去压测

OLAP场景压测结果

  1. 性能测试PTS控制台左侧导航栏中,选择性能测试 > 报告列表
  2. 单击目标PTS测试右侧操作列下的查看报告
  3. 在报告页面,您可以查看成功率平均RTTPS异常数总请求数
    压测结果-概览
    说明
    • 如果总请求数等信息均为0,表示压测任务运行失败,可以单击页面上方的查看采样日志,然后单击查看详情,在Error信息中查看报错信息,进行问题排查。
    • 如果成功率不是100%可以在明细页签中查看是否有错误信息。
  4. 单击明细页签,可以查看整个测试链路中各个API的详细性能数据。
    压测结果-明细-1压测结果-明细-2
  5. 切换到AnalyticDB PostgreSQL版控制台,查看实例监控中的实例活跃连接数项目,验证PTS压测计划是否生效,查看方法,请参见实例监控
    实例监控

    可以看到实例的活跃连接如预期计划自动递增(由3并发逐步增加至15并发)。

点查询场景压力测试

  1. 登录性能测试PTS控制台
  2. 在左侧导航栏中选择性能测试 > 创建场景
  3. 创建场景页面,单击PTS压测
  4. 场景名右侧输入场景名称。
  5. 场景配置页签,进行以下配置:
    1. 单击删除图表图标,删除默认的压测API。
    2. 将鼠标移动到添加压测节点右侧的下拉图表图标上,单击JDBC压测节点
    3. 单击新建的压测API右侧的折叠图表图标,配置基本请求信息
      参数说明
      API名称自定义API名称。
      数据库类型选择PostgreSQL。
      数据库URL格式为{HOSTNAME}:{PORT}/{DBNAME},获取{HOSTNAME}:{PORT}的方式如下:
      1. 登录云原生数据仓库AnalyticDB PostgreSQL版控制台
      2. 在控制台左上角,选择实例所在地域。
      3. 找到目标实例,单击实例ID。
      4. 基本信息页面的数据库连接信息,即可获取连接地址和端口。连接地址

        您可以根据需求选择内网地址或外网地址。

      {DBNAME}adb_sampledata_tpch

      数据库URL示例如下:gp-bp1vgqague4lt****-master.gpdb.rds.aliyuncs.com:5432/adb_sampledata_tpch

      用户名AnalyticDB PostgreSQL版示例的数据库账号和密码,获取方式请参见创建数据库账号
      密码
      SQL待执行的SQL语句,本次示例使用如下语句:
      SELECT
          O_ORDERKEY,
          O_CUSTKEY,
          O_ORDERSTATUS,
          O_TOTALPRICE,
          O_ORDERDATE,
          O_ORDERPRIORITY,
          O_CLERK,
          O_SHIPPRIORITY,
          O_COMMENT
      FROM
          public.orders_row
      WHERE
          o_orderkey = ?;
      超时时间接口的响应超时时间,本次示例取值为50000。
      limit查询语句的最大读取行数,最大值为1000000,本次示例取值为1000。
    4. 单击占位符,配置如下信息。
      参数说明
      Type本次示例中占位符Type使用bigint
      ValuePTS支持若干系统函数,本次示例使用random函数,即Value值为${sys.random(1,99999999)}
    5. 单击连接池配置,配置如下信息。
      参数说明
      初始化连接数初始化时建立的物理连接数量,本次示例取值为1。
      获取连接最大等待时间从连接池中获取空闲连接的等待事件,单位为毫秒,本次示例取值为4000。
      最大连接数最大活跃连接数量和最小活跃连接数量,用以匹配单并发与多并发的多种测试场景。本次示例最大连接数为15,最小连接数为1。
      最小连接数
  6. 单击施压配置页签,配置压测模式配置
    参数说明
    压力来源选择PTS的网络类型,本次示例为阿里云VPC内网

    发起阿里云VPC内网性能测试的更多介绍,请参见如何发起阿里云VPC内网性能测试

    VPC信息选择PTS的VPC、安全组以及vSwitch。
    说明
    • PTS的VPC和vSwitch需要与AnalyticDB PostgreSQL版实例的VPC和vSwitch一致。
    • 如需新建安全组,请参见创建安全组
    压力模式选择并发模式(虚拟用户模式)
    递增模式选择自动递增
    最大并发设置为您希望达到的最大并发,本次示例为50。
    递增百分比为保证并发数始终为50,本次示例为100%。
    单量级持续时长为保证并发数始终为50,本次示例为1分钟。
    压测总时长总测试时长,本次示例为10分钟。
    指定IP数指定发起压测流量的IP地址数量,即施压机器的数量。本次示例固定为1。
  7. 为防止正式压测时由于人为配置错误导致压测失败,可以单击场景调试对测试整个串联链路中各个查询的连通性。
    如果出现异常,则表示压测API配置可能出错,建议检查并进行修改。
  8. 场景调试通过后,单击保存去压测

点查询场景压测结果

  1. 性能测试PTS控制台左侧导航栏中,选择性能测试 > 报告列表
  2. 单击目标PTS测试右侧操作列下的查看报告
  3. 报告示例如下:
    点查询报告
  4. 切换到AnalyticDB PostgreSQL版控制台,查看节点监控中CPU使用率项目,查看方法,请参见节点监控
    PTS压测-节点监控

    通过上述信息可以看到计算节点的CPU使用率达到了较高的水位。

  5. 切换到AnalyticDB PostgreSQL版控制台,查看实例监控中的实例活跃连接数项目,查看方法,请参见实例监控
    PTS-节点监控

    可以看到实例的活跃连接数达到了PTS设置的50并发。

PTS与PGBench的对比

  • PTS支持各种类型的数据库测试,并发可动态调整,发起压测的机器数量可自由设置,压测可以不局限于一台机器。
  • PTS支持云内网压测,无需单独购买ECS实例作为压测发起机器。
  • PTS配置简单,无需进行人工脚本书写,并且支持系统函数。
  • PTS支持正式压测前的场景测试。
  • PTS支持多样化的场景设置,例如超时时间、连接池设置等。
  • PTS可提供全面的压测可视化结果,并详细记录了测试过程中的重要数据。