『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

文章目录

  • 『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试
  • 前言
  • 一、简单介绍一下Lightsail
    • 1.1 创建一台Lightsail数据库实例
  • 二、搭建测试环境
    • 2.1 安装sysbench
    • 2.2 准备测试数据
    • 2.3开始测试
      • 综合TPS测试 oltp_read_write
      • 只读测试 oltp_read_only
      • 测试完进行清理cleanup
  • 总结


前言

最近一直在探索亚马逊科技上的产品,现在PASS平台越来越多,但是真正能经得起考验的却不是很多,AWS作为比较有实力的厂商还是值得学习的,主要是最近也看到aws新注册考研免费试用12个月的ec2和3个月的Lightsail,所以准备到上面看看产品到底如何。

Lightsail是一个虚拟专用服务器 (VPS) 实例,他提供一些数据库实例、应用等,有很多预装好的环境,也提供现在很火的容器服务,不过今天我们的主要内容就是来测试一下 Lightsail 的数据库实例如何,我们会使用常见的sysbench基准测试对数据库的吞吐率进行测评。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简单介绍一下Lightsail

这是一个专门为开发者准备的轻量型应用服务器。我们可以Lightsail实例选择一个镜像来快速启动、开发项目,这样就不必花费大量的时间来安装软件或框架

1.1 创建一台Lightsail数据库实例

登录AWS账号后,会到一个控制面板,面板中有个最近访问,会推荐 Lightsail,如果大家没有看到,可以从搜索框搜索进入 Lightsail 的控制台

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第1张图片

  • 选择数据库并创建一个数据库实例

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第2张图片
选择合适的 Mysql 版本,以及对应的套餐

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第3张图片
这里官方是推荐使用 8.0,然后我们默认就好了,套餐的话因为前3个月是免费的,所以也是默认,对于有数据库高可用需求的可以不用选择 Standard,可以切换成 High Available

然后划到最下面点击创建,这样就是创建成功了

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第4张图片
默认数据库实例是只允许内网连接的,我们可以把公网打开

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第5张图片
『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第6张图片
通过Mysql Client 连接测试一下

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第7张图片

二、搭建测试环境

2.1 安装sysbench

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

我们需要有一台测试服务器,大家可以购买EC2或者使用自有的,我使用的是自有的,是centos系统,安装操作如下:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum -y install sysbench

# 检查是否安装成功
sysbench --version

在这里插入图片描述

2.2 准备测试数据

我们通过数据库客户端Navicat工具在数据库中创建 aws_test 库用于测试,使用Sysbench快速生成测试数据。测试数据规模:10张表,每张表10000条数据。

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第8张图片

sysbench --db-driver=mysql  --threads=10 --report-interval=1 --mysql-host=ls-ca37e2b64fd2b1abd5bd9fced0c2e5a12e1bc754.c8ugxo23bwey.ap-northeast-2.rds.amazonaws.com --mysql-port=3306 --mysql-user=dbmasteruser --mysql-password='038%svpK_p

命令解释:

sysbench 
//基于mysql的驱动去连接mysql数据库
--db-driver=mysql 
//10个线程模拟并发访问
--threads=10 
//每隔1秒输出一下压测情况
--report-interval=1 
//aws host
--mysql-host=
//端口号:3306
--mysql-port=3306 
//测试用户
--mysql-user=root 
//测试密码
--mysql-password=******* 
//测试数据库
--mysql-db=aws_test
//模拟新建10个表
--tables=10 
//1万条数据 执行oltp数据库的读写测试
--table_size=10000 oltp_read_write 
//参照这个命令的设置去构造出来我们需要的数据库里的数据
//自动创建10个测试表,每个表里创建1万条测试数据
--db-ps-mode=disable prepare

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第9张图片

2.3开始测试

综合TPS测试 oltp_read_write

这里 --time=300 是测试300秒,也就是测5分钟,然后我们看看性能如何

sysbench --db-driver=mysql   --time=300  --threads=10 --report-interval=1 --mysql-host=ls-ca37e2b64fd2b1abd5bd9fced0c2e5a12e1bc754.c8ugxo23bwey.ap-northeast-2.rds.amazonaws.com --mysql-port=3306 --mysql-user=dbmasteruser --mysql-password='038%svpK_p

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第10张图片
字段解释:

  • thds 压测线程数
  • tps 每秒事务数
  • qps 每秒请求数
  • (r/w/o) 每秒的请求数中读请求个数/写请求个数/其他请求个数
  • lat(ms,95%) 95% 的请求延迟都在多少以下
  • err/s 错误数
  • reconn/s 重连数

数据报告如下:

[ 295s ] thds: 10 tps: 4.00 qps: 97.00 (r/w/o: 72.00/17.00/8.00) lat (ms,95%): 2045.74 err/s: 0.00 reconn/s: 0.00
[ 296s ] thds: 10 tps: 5.00 qps: 95.00 (r/w/o: 63.00/22.00/10.00) lat (ms,95%): 2449.36 err/s: 0.00 reconn/s: 0.00
[ 297s ] thds: 10 tps: 5.00 qps: 99.01 (r/w/o: 68.00/21.00/10.00) lat (ms,95%): 2449.36 err/s: 0.00 reconn/s: 0.00
[ 298s ] thds: 10 tps: 4.00 qps: 98.92 (r/w/o: 73.94/16.99/7.99) lat (ms,95%): 2449.36 err/s: 0.00 reconn/s: 0.00
[ 299s ] thds: 10 tps: 7.01 qps: 97.08 (r/w/o: 58.05/26.02/13.01) lat (ms,95%): 2449.36 err/s: 0.00 reconn/s: 0.00
[ 300s ] thds: 10 tps: 2.00 qps: 97.00 (r/w/o: 83.00/9.00/5.00) lat (ms,95%): 1869.60 err/s: 0.00 reconn/s: 0.00
[ 301s ] thds: 4 tps: 9.00 qps: 60.00 (r/w/o: 20.00/31.00/9.00) lat (ms,95%): 2449.36 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            20426  #300s执行了 20426  的读请求
        write:                           5836   # 300s执行了 5836    写请求
        other:                           2918   #300s执行了共2918  其他请求
        total:                           29180  #300s执行了共29180  请求
    transactions:                        1459   (4.85 per sec.)  #300s执行了1459 的事务数 每秒4.8个事务
    queries:                             29180  (96.92 per sec.)  # 300s执行了 29180  的查询,每秒 96.9 个查询
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          301.0694s # 总耗时
    total number of events:              1459 # 中发生事务数

Latency (ms):
         min:                               1843.81  #最小延迟 1843.81  ms
         avg:                               2060.15 #平均延迟 2060.15ms
         max:                               2733.66 # 最大延迟 2733.66ms
         95th percentile:                   2449.36 #95%的请求延迟 2449.36ms
         sum:                            3005761.79

Threads fairness:
    events (avg/stddev):           145.9000/16.08
    execution time (avg/stddev):   300.5762/0.34

我们观察一下测试期间数据库实例的状态:
实例配置为 1GB 2CPU

『亚马逊云科技产品测评』活动征文|使用sysbench对Lightsail数据库应用进行基准测试_第11张图片
可以看到对于CPU的消耗还是很有限的

只读测试 oltp_read_only

sysbench --db-driver=mysql   --time=300  --threads=10 --report-interval=1 --mysql-host=ls-ca37e2b64fd2b1abd5bd9fced0c2e5a12e1bc754.c8ugxo23bwey.ap-northeast-2.rds.amazonaws.com --mysql-port=3306 --mysql-user=dbmasteruser --mysql-password='038%svpK_p

数据如下:

[ 296s ] thds: 10 tps: 7.00 qps: 93.00 (r/w/o: 79.00/0.00/14.00) lat (ms,95%): 1973.38 err/s: 0.00 reconn/s: 0.00
[ 297s ] thds: 10 tps: 4.00 qps: 93.01 (r/w/o: 85.00/0.00/8.00) lat (ms,95%): 1903.57 err/s: 0.00 reconn/s: 0.00
[ 298s ] thds: 10 tps: 8.00 qps: 91.00 (r/w/o: 77.00/0.00/14.00) lat (ms,95%): 1973.38 err/s: 0.00 reconn/s: 0.00
[ 299s ] thds: 10 tps: 5.00 qps: 94.00 (r/w/o: 83.00/0.00/11.00) lat (ms,95%): 1938.16 err/s: 0.00 reconn/s: 0.00
[ 300s ] thds: 10 tps: 7.00 qps: 93.99 (r/w/o: 79.99/0.00/14.00) lat (ms,95%): 1973.38 err/s: 0.00 reconn/s: 0.00
[ 301s ] thds: 10 tps: 4.00 qps: 77.01 (r/w/o: 72.01/0.00/5.00) lat (ms,95%): 1938.16 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            24430
        write:                           0
        other:                           3490
        total:                           27920
    transactions:                        1745   (5.78 per sec.)
    queries:                             27920  (92.49 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          301.8760s
    total number of events:              1745

Latency (ms):
         min:                               1469.69
         avg:                               1726.06
         max:                               2326.61
         95th percentile:                   1973.38
         sum:                            3011979.45

Threads fairness:
    events (avg/stddev):           174.5000/20.31
    execution time (avg/stddev):   301.1979/0.56

测试完进行清理cleanup

sysbench --db-driver=mysql   --time=300  --threads=10 --report-interval=1 --mysql-host=ls-ca37e2b64fd2b1abd5bd9fced0c2e5a12e1bc754.c8ugxo23bwey.ap-northeast-2.rds.amazonaws.com --mysql-port=3306 --mysql-user=dbmasteruser --mysql-password='038%svpK_p

到这整个测试流程就结束了,大家可以根据自己的需求对比测试结果进行选择

总结

这次测试我认为不是aws数据库的上限,因为测试主机在国内,然后实例地址应该是在首尔,所以中间很大的延时都是在网络上,本次测试就当是测试国内+国外数据库的性能了。

你可能感兴趣的:(科技,数据库)