Loading

数据库性能测试

测试数据量级:10张表,每张表200万条数据

使用 Sysbench 对数据库进行压测,通常分为三个步骤:

prepare,准备数据
run,运行测试模型
cleanup,清理测试数据

测试环境

测试环境 IP 核心 内存 磁盘类型
物理服务器 10.63.4.59 32 128 机械磁盘
云平台 10.63.4.57 2 8 机械磁盘,分布式存储GlusterFS
阿里云 121.40.191.216 8 8 SSD磁盘

环境配置不对等的情况下,在容器启动时通过参数控制容器所使用的相关资源与云平台一致

磁盘性能测试

在测试之前首先对个环境磁盘性能使用fio工具进行测试

以下所有测试测试线程为单线程,文件大小为1G,以每次4k的io进行测试。

  • 物理机

随机读

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/opt/rainbond/iotest -name=Rand_Read_Testing

随机写

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/opt/rainbond/iotest -name=Rand_Write_Testing

顺序读

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/opt/rainbond/iotest/ -name=Read_PPS_Testing

顺序写

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/opt/rainbond/iotest/ -name=Write_PPS_Testing
  • 云平台

随机读

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/grdata/iotest -name=Rand_Read_Testing

随机写

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/grdata/iotest  -name=Rand_Write_Testing

顺序读

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/grdata/iotest -name=Read_PPS_Testing

顺序写

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/grdata/iotest -name=Write_PPS_Testing
  • 阿里云

随机读

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/root/iotest -name=Rand_Read_Testing

随机写

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/root/iotest -name=Rand_Write_Testing

顺序读

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/root/iotest/ -name=Read_PPS_Testing

顺序写

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -directory=/root/iotest/ -name=Write_PPS_Testing

磁盘性能测试结果

测试环境 测试内容 IOPS BW(平均IO带宽)
物理机 随机读 2680 10.5MiB/s
云平台 随机读 591 2364.6KB/s
阿里云 随机读 17.0k 66.4MiB/s
物理机 随机写 3405 13.3MiB/s
云平台 随机写 310 1240.1KB/s
阿里云 随机写 16.0k 66.3MiB/s
物理机 顺序读 310 311MiB/s
云平台 顺序读 102 104742KB/s
阿里云 顺序读 301 302MiB/s
物理机 顺序写 169 169MiB/s
云平台 顺序写 15 15515KB/s
阿里云 顺序写 303 303MiB/s

数据库测试环境准备

所有环境数据库均使用容器化部署

  • 物理机

由于该测试物理机内存CPU较其他环境具有优势,所以在测试时将容器内存CPU限制为8核心8GB

部署机器信息:

IP:10.63.4.59
密码: root123
数据库端口:3308
数据库密码:****

运行数据库

docker run --name test-mysql -m 8192m --cpu-shares=1966 --cpu-quota 478000 --cpu-period 100000 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=****  -v /var/lib/test-mysql:/var/lib/mysql -e --character-set-server=utf8mb4 -e MYSQL_DATABASE=systest  -d mysql:5.7

参数解释

-m 限制内存使用量为8GB
--cpus 限制使用cpu核数为2核
--cpu-shares cpu相对权重
--cpu-quota 指定在一个周期内,cpu最多可以有多少时间用来跑这个容器
--cpu-period 指定容器对CPU的使用要在多长时间内做一次重新分配

  • 云平台(共享存储)

被测数据库为普通环境在咸阳应用,Mysql5.7(压测)

数据库容器ip: 192.168.142.126
数据库密码 : ****
运行宿主机:10.63.4.64

  • 云平台(本地存储)

被测数据库为普通环境在咸阳应用,Mysql5.7(本地存储)

数据库容器ip: 192.168.142.74
数据库密码 : ****
运行宿主机:10.63.4.64

  • 阿里云

部署机器信息:

被测机:121.40.191.216
密码:gr123465!
数据库端口:3306
数据库密码:****

运行数据库:

docker run --name test-mysql -m 8192m --cpu-shares=1966 --cpu-quota 478000 --cpu-period 100000 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=**** -v /var/lib/test-mysql:/var/lib/mysql -e --character-set-server=utf8mb4 -e MYSQL_DATABASE=systest  -d mysql:5.7

测试过程

为保证测试结果公平,测试前请在测试机先清理数据

#刷新脏数据到磁盘
sync 
#清除cache
echo 3 >/proc/sys/vm/drop_caches
#释放swap
swapoff -a && swapon -a

物理机

  • 测试机信息

测试机IP:10.63.4.57
密码:****

  • 准备
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --report-interval=5 --time=100 prepare
  • 运行

插入

sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

查询

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/select.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

删除

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/delete.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

读写混合

 sysbench   /root/sysbench-1.0/src/lua/oltp_read_write.lua    --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run
  • 清理
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.63.4.59 --mysql-port=3308 --mysql-db=systest --threads=100 --report-interval=5 --time=100 cleanup

云平台(共享存储)

  • 测试机信息

测试机IP:10.63.4.57
密码:****

  • 准备
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.126  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 prepare
  • 运行

插入

sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=192.168.142.126 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

查询

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/select.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.126 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

删除

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/delete.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.126 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

读写混合

 sysbench   /root/sysbench-1.0/src/lua/oltp_read_write.lua    --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.83 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run
  • 清理
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.83  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 cleanup

云平台(本地存储)

  • 测试机信息

测试机IP:10.63.4.57
密码:wlsj0501!

  • 准备
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=192.168.142.74  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 prepare
  • 运行

插入

sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.74 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

查询

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/select.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=****  --mysql-host=192.168.142.74 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

删除

sysbench  /root/sysbench-1.0/tests/include/oltp_legacy/delete.lua   --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=192.168.142.74 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

读写混合

sysbench   /root/sysbench-1.0/src/lua/oltp_read_write.lua    --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=192.168.142.74 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run
  • 清理
sysbench /root/sysbench-1.0/src/lua/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=192.168.142.74  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 cleanup

阿里云

  • 测试机信息

测试机IP:121.41.106.66
密码:****

  • 准备
 sysbench /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 prepare
  • 运行

插入

sysbench /usr/share/sysbench/oltp_insert.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

查询

sysbench /usr/share/sysbench/tests/include/oltp_legacy/select.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

删除

sysbench /usr/share/sysbench/tests/include/oltp_legacy/delete.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run

读写混合

 sysbench /usr/share/sysbench/oltp_read_write.lua  --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160 --mysql-port=3306 --mysql-db=systest --threads=100 --time=100 --report-interval=5 run
  • 清理
 sysbench /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=2000000 --mysql-user=root --mysql-password=**** --mysql-host=10.11.1.160  --mysql-port=3306 --mysql-db=systest --threads=100 --report-interval=5 --time=100 cleanup

测试结果

测试环境 测试内容 每秒查询数 (QPS) 每秒事务数(TPS) 平均耗时(ms) 95%以上语句响应时间(ms)
物理机 10张表,执行insert语句,分别向每张表插入数据200万。 4197.49 4197.49 23.81 87.56
云平台(共享存储) 10张表,执行insert语句,分别向每张表插入数据200万。 137.64 137.64 724.32 2449.36
云平台(本地存储) 10张表,执行insert语句,分别向每张表插入数据200万。 3609.99 3609.99 7.69 90.78
阿里云 10张表,执行insert语句,分别向每张表插入数据200万。 14724.55 14724.55 6.79 20.74
物理机 执行select语句,分别从10张表中查询数据。 25552.21 25552.21 3.91 1.73
云平台(共享存储) 执行select语句,分别从10张表中查询数据。 22851.12 22851.12 4.37 2.71
云平台(本地存储) 执行select语句,分别从10张表中查询数据。 23886.23 23886.23 4.18 2.35
阿里云 执行select语句,分别从10张表中查询数据。 49049.69 49049.69 2.04 3.43
物理机 执行delete语句,分别从10张表中删除数据。 14603.18 14603.18 6.84 86.00
云平台(共享存储) 执行delete语句,分别从10张表中删除数据。 11944.01 11944.01 8.37 82.69
云平台(本地存储) 执行delete语句,分别从10张表中删除数据。 13275.33 13275.33 7.53 81.48
阿里云 执行delete语句,分别从10张表中删除数据。 45520.04 45520.04 2.20 3.43
物理机 读写混合测试 7807.77 390.39 255.92 484.44
云平台(共享存储) 读写混合测试 657.50 37.43 4667.79 8795.93
云平台(本地存储) 读写混合测试 5036.15 251.81 396.89 831.46
阿里云 读写混合测试 24964.83 1248.24 80.09 173.58
**
posted @ 2020-11-16 09:49  亚里士多智  阅读(513)  评论(0编辑  收藏  举报