POLARDB性能白皮书

  • A+
所属分类:POLARDB
摘要

本文档介绍如何使用Sysbench 0.5测试POLARDB的最大性能。

本文档介绍如何使用Sysbench 0.5测试POLARDB的最大性能。

SysBench是一个跨平台且支持多线程的模块化基准测试工具,用于评估系统在运行高负载的数据库时相关核心参数的性能表现。SysBench的目的是为了绕过复杂的数据库基准设置,甚至在没有安装数据库的前提下,快速了解数据库系统的性能。

准备工作

  • 三台ECS实例:

    • 每台有32个vCPU,例如规格ecs.sn1ne.8xlarge。
    • ECS实例与POLARDB集群位于同一个地域的同一个可用区。
    • 已设置ECS实例的账号密码。
    • 操作系统为CentOS 7.4 64位。
  • 一个POLARDB集群:

    • 其中包含一个主实例和一个只读实例。(测试多只读实例时,需要多个只读实例。)
    • 已设置集群的账号和密码。
    • 已在白名单中添加ECS实例的内网IP地址。

安装测试工具

  1. 在ECS中执行如下命令安装sysbench 0.5。

    yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel git mysql

    git clone https://github.com/akopytov/sysbench.git

    cd sysbench

    git checkout 0.5

    ./autogen.sh

    ./configure --prefix=/usr --mandir=/usr/share/man

    make

    make install

  2. 执行如下命令配置Sysbench client,使内核可以使用所有的CPU核处理数据包(默认设置为使用2个核),同时减少CPU核之间的上下文切换。

    sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo ffffffff>$x/rps_cpus; done'

    注:ffffffff表示使用32个核。请根据实际配置修改,例如,如果ECS为8核,则输入ff。

    sudo sh -c "echo 32768 > /proc/sys/net/core/rps_sock_flow_entries"

    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt"

    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-1/rps_flow_cnt"

测试方法

  1. 获取POLARDB集群的连接串和端口。
    1. 登录POLARDB控制台,进入集群列表页面。
    2. 单击集群ID或者管理进入集群信息页面。
    3. 找到POLARDB的集群连接地址(VPC)和端口,如下图所示。
      POLARDB性能白皮书
  2. 在ECS上执行如下命令,以在POLARDB集群中创建数据库sbtest。

    mysql -h XXX -P XXX -u XXX -p XXX -e 'create database sbtest'

    说明 请将本命令和后续步骤的命令中的XXX替换为POLARDB集群的VPC连接地址、端口号、用户名和密码。
  3. 准备测试数据:用Sysbench在数据库上创建表并插入数据。
    sysbench --test=sysbench/tests/db/oltp.lua --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --mysql-table-engine=innodb --oltp-table-size=25000 --oltp-tables-count=250 --db-driver=mysql prepare
  4. 使用sysbench测试数据库的读性能,将持续10分钟。
    sysbench --test=sysbench/tests/db/oltp.lua --mysql-host=XXX --oltp-tables-count=250 --mysql-user=XXX --mysql-password=XXX --mysql-port=XXX --db-driver=mysql --oltp-tablesize=25000 --mysql-db=sbtest --max-requests=0 --oltp_simple_ranges=0 --oltp-distinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 -max-time=600 --oltp-read-only=on --num-threads=500 run
  5. 使用sysbench测试数据库的写性能,将持续10分钟。
    sysbench --test=sysbench/tests/db/oltp.lua --mysql-host=XXX --oltp-tables-count=250 --mysql-user=XXX --mysql-password=XXX --mysql-port=XXX --db-driver=mysql --oltp-tablesize=25000 --mysql-db=sbtest --max-requests=0 --max-time=600 --oltp_simple_ranges=0 --oltp-distinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --oltp-point-selects=0 --num-threads=128 --randtype=uniform run
  6. 在以上测试的过程中,您可以另外打开一个会话窗口,连接该ECS实例,并使用htop查看sysbench client的CPU使用率是否正常。

    yum install htop

    htop

    说明

    • 执行htop后,可以按Q键退出。
    • 关于htop详解,请参见Htop官网
    POLARDB性能白皮书
    POLARDB性能白皮书

测试结果

使用三台ECS进行数据库性能测试,从log中取测试结果中的QPS和TPS,如下图所示。

说明 QPS(Queries Per Second)表示数据库每秒执行的SQL数(含INSERT、SELECT、UPDATE、DELETE等)。
单台ECS的log结果如下:

POLARDB性能白皮书

三台ECS实例通过集群连接串连接一个POLARDB集群时,总QPS如下。

说明 集群连接串总是连接到主实例,所以以下QPS为主实例的性能。

POLARDB性能白皮书

三台ECS实例通过集群连接串连接一个POLARDB集群时,总TPS如下。

说明 集群连接串总是连接到主实例,所以以下TPS为主实例的性能。

POLARDB性能白皮书

五台ECS实例通过只读实例连接串连接到一个POLARDB集群中各个只读实例时,聚合QPS如下。

说明

  • 该集群中包含五个只读实例,每个实例的规格为4C 32G。
  • 每台ECS连接到一个只读实例。

POLARDB性能白皮书

 

admin
阿里邮箱 企业邮箱标准版 5账号
安全 ssl证书https 网站可信 防劫 防篡改防监听快速签发GeoTrust
轻量应用服务器--云服务器vps 建站/应用/云主机
网站定制/网站建设一条龙/不满意全额退款/云·企业官网

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: