本文通过ECS(Elastic Compute Service)访问云数据库MongoDB,测试云数据库MongoDB单节点实例的高连接能力。

准备工作

  1. 创建ECS实例和云数据库MongoDB单节点实例。如何创建,请参见创建单节点实例 通过控制台使用ECS实例(快捷版) 云服务器ECS快速入门
    本测试的实例配置如下:
    配置项ECS实例云数据库MongoDB单节点实例说明
    地域及可用区华东1(杭州)可用区H华东1(杭州)可用区HECS实例和云数据库MongoDB单节点实例在同一地域及可用区。
    网络类型专有网络VPC专有网络VPCECS实例和云数据库MongoDB单节点实例在同一VPC。
    CPU和内存16核 128 GB
    • 规格类型:8核 32 GB
    • 磁盘空间:200 GB
    不涉及
    实例规格族ecs.hfr6通用型
    实例规格ecs.hfr6.4xlargedds.sn4.2xlarge.1
    存储类型ESSD云盘ESSD云盘
    实例或镜像版本Alibaba Cloud Linux 3.2104 LTS 64位MongoDB 3.4
  2. 将ECS实例的主私网IP添加到云数据库MongoDB单节点实例的白名单中。如何添加,请参见设置白名单
  3. 在ECS实例上安装开源社区的YCSB工具。如何安装和使用,请参见YCSB

测试步骤

  1. 登录ECS控制台,远程连接ECS实例。如何连接,请参见连接ECS实例
  2. 执行如下测试命令,加载数据至云数据库MongoDB单节点实例。
    ./bin/ycsb load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=30000000 -p mongodb.url="mongodb://root:123456Aa@dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717/admin" -threads 8
    您需要替换如下参数值:
    • 123456Aa:云数据库MongoDB单节点实例的root账号密码。
    • dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717:云数据库MongoDB单节点实例的主节点连接地址。
      说明 您可以登录云数据库MongoDB控制台,在数据库连接页面的私网连接 - 专有网络区域查看连接地址。
  3. 启动YCSB进程,根据不同场景进行读写测试。
    场景测试命令说明
    并发数为8
    ./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=30000000 -p operationcount=50000000 -p readproportion=0.5 -p updateproportion=0.5 -p requestdistribution=zipfian -p mongodb.url="mongodb://root:123456Aa@dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717/admin" -threads 8
    您需要替换如下参数值:
    • 123456Aa:云数据库MongoDB单节点实例的root账号密码。
    • dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717:云数据库MongoDB单节点实例的主节点连接地址。
      说明 您可以登录云数据库MongoDB控制台,在数据库连接页面的私网连接 - 专有网络区域查看连接地址。
    并发数为2000
    ./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=30000000 -p operationcount=50000000 -p readproportion=0.5 -p updateproportion=0.5 -p requestdistribution=zipfian -p mongodb.url="mongodb://root:123456Aa@dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717/admin" -threads 2000
    并发数为10000
    ./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=30000000 -p operationcount=50000000 -p readproportion=0.5 -p updateproportion=0.5 -p requestdistribution=zipfian -p mongodb.url="mongodb://root:123456Aa@dds-bp13e84d111a1a****.mongodb.rds.aliyuncs.com:3717/admin" -threads 10000
  4. 查看云数据库MongoDB单节点实例的连接数。
    1. 登录云数据库MongoDB控制台
    2. 在左侧导航栏,单击副本集实例列表
    3. 在页面左上角,选择实例所在的资源组和地域。
    4. 单击目标实例ID或目标实例所在行操作列的管理
    5. 在目标实例的左侧导航栏,单击监控信息
    6. 基本监控的页签下,选择时间为近1小时,查看实例的CPU使用率(%)操作QPS数(个)连接数(个)
      场景CPU使用率(%)操作QPS数(个)连接数(个)
      并发数为8并发数为8的CPU使用率并发数为8的QPS数并发数为8的连接数
      并发数为2000并发数为2000的CPU并发数为2000的QPS并发数2000的连接数
      并发数为10000并发数10000的CPU使用率并发数10000的QPS并发数为10000的连接数

测试结果

  • 规格为8核 32 GB的云数据库MongoDB单节点实例有能力承受10000个连接。
  • 连接实例会占用实例的一部分CPU资源,建议将连接数控制在一定范围内。
  • 并发数增加到一定数量后,CPU使用率和操作QPS数不再随着并发数的增加而提高。您需要根据自身业务情况,合理控制并发数。