atlas mysql 性能测试_Atlas的性能测试

Atlas的性能测试

1.测试环境

1.1服务器配置

类别

名称

OS

CentOS 6.2

CPU

Intel(R) Xeon(R) E5620 @ 2.40GHz *4

RAM

8GB

DISK

350GB

Atlas

v2.0.3

Mysql

v5.5.33

Sysbench

v0.4.12

2.性能需求

测试通过Atlas转发SQL请求与直连DB发送SQL请求这两种情形下的性能差距。

测试配置文件中event-threads参数对Atlas的影响,并找出最优值。

3.测试准备工作

3.1 Atlas性能测试环境搭建

利用上述配置的4台服务器搭建了一个Atlas性能测试环境:

服务器A运行着主库

服务器B运行着从库

服务器C运行Atlas系统

服务器D运行sysbench

四台服务器处在同一个网段中。具体的拓扑图如下所示:

687474703a2f2f7777322e73696e61696d672e636e2f6c617267652f36653537303561356a773165626f7a7230307073386a323062783063663734672e6a7067

有关Atlas系统安装与配置,请参考文档《Atlas的安装》,sysbench直接通过 yum安装(yum install sysbench)。

4.测试过程

4.1 Atlas与直连DB性能比较

利用sysbench测试通过Atlas转发SQL请求和直连DB发送SQL请求这两种情况下,

Atlas和Mysql系统的两项数据指标:QPS和每条SQL请求平均处理时间。

通过sysbench发送三类SQL请求:select,update,insert。

每类请求都是单独发送。具体的操作过程如下所示:

执行下面的命令测试sysbench连接Atlas

sysbench --test=oltp \

--num-threads=1 \

--max-requests=80000 \

--oltp-test-mode=nontrx \

--db-driver=mysql \

--mysql-db=my_db \

--mysql-host=192.168.0.12 \

--mysql-port=1234 \

--mysql-user=buck \

--mysql-password=buck \

--oltp-nontrx-mode=select \

--db-ps-mode=disable \

prepare (run,cleanup)

上述命令是sysbench执行80000次随机select操作,这80000次操作都是非事务的。

通过修改 --oltp-nontrx-mode 选项,可以执行update和insert操作。

通过修改 --num-threads 参数,可以调整并发测试线程的个数。

sysbench创建表的语句是:

CREATE TABLE sbtest (

id int(10) unsigned NOT NULL AUTO_INCREMENT,

k int(10) unsigned NOT NULL DEFAULT '0',

c char(120) NOT NULL DEFAULT '',

pad char(60) NOT NULL DEFAULT '',

PRIMARY KEY (id),

KEY k (k)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

执行下面的命令测试直连DB:

sysbench --test=oltp \

--num-threads=1 \

--max-requests=80000 \

--oltp-test-mode=nontrx \

--db-driver=mysql \

--mysql-db=my_db \

--mysql-host=192.168.0.13 \

--mysql-port=3306 \

--mysql-user=buck \

--mysql-password=buck \

--oltp-nontrx-mode=select \

--db-ps-mode=disable \

prepare (run,cleanup)

利用sysbench测试了并发线程个数不同的情况下,分别执行80000次 select,update 和 insert 三种操作。

测试连接 Atlas 和直连 DB 这两种情况下的 QPS(QPS越大,系统性能越好),

每组数据重复测试三次后取平均值,具体数据对比如下表所示:

687474703a2f2f7777322e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270343430303474326a3230696c30617a676d792e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f36653537303561356a77316562707a6173746d69316a3230696e3063366a73392e6a7067

同时测试了sysbench不同并发线程下,完成每个SQL操作平均时间(单位:ms,时间越短,系统性能越好)。具体数据对比如下所示:

687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346e6e376362646a3230696f306278676d782e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f313636677a6a3230696c306277337a372e6a7067

从表一可以看出,当sysbench的并发测试线程较少时,连接Atlas和直连DB的QPS差距较大。

这主要是因为当sysbench并发线程少时,Atlas的性能没有得到充分的发挥,

sysbench只有很少的线程向Atlas发送请求,此时网络延迟对QPS的影响是最主要的。

当sysbench的并发测试线程较大时,此时Atlas的性能就得到了充分的发挥,

此时QPS的对比是连接Atlas与直连DB性能对比的真实的反应,网络延迟对QPS的影响作用就显得很小了。

从表一数据来看,通过Atlas发送select请求时的QPS是直连DB时60%左右,

而update和insert请求对应的QPS则更高一些,相当于直连DB时的80%左右。

由此看来利用Atlas转发SQL请求带来的性能下降虽有下降,但完全可以接受。

从表二可以看出,在sysbench的并发测试线程较少的情况下,连接Atlas和直连DB时完成每条SQL操作的时间差距较大,

造成这种结果的原因也是由于Atlas性能未充分发挥,网络延迟起了主要作用。

当sysbench并发测试线程较高时,Atlas的性能充分发挥,此时完成每条SQL操作的时间差距对比,才是Atlas的真正性能反映。

通过Atlas发送SQL请求时的每条操作完成时间大约是直连DB时1.5倍,由此看来利用Atlas转发SQL请求带来的时间延迟不是非常明显,同样也是可以接受的。

4.2 event-threads参数对Atlas性能影响

event-threads 是 Atlas 工作时创建的工作线程个数,这个值设置的不同对 Atlas 性能也有比较明显的影响。

我们分别测试将 event-threads 设置为4,8,16时,Atlas转发select,update和insert三类操作请求时的 QPS

和完成每条SQL操作时间对比。具体对比结果如下所述:

1.利用sysbench分别并发16,32,64和128个测试线程,执行80000次select操作,Atlas具体的QPS对比如下表所示:

687474703a2f2f7777342e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f756e73326f6a323066623035683074622e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f7569756d346a323069673063326a73332e6a7067

完成每条select操作时间(单位:ms)对比如下表所示:

687474703a2f2f7777342e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f75646833316a323066633035697439362e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777322e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f75616b74626a3230673530623561616f2e6a7067

2.利用sysbench分别并发16,32,64和128个测试线程,执行80000次update操作,Atlas具体的QPS对比如下表所示:

687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f75363037336a3230666230356a6a72772e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f75326531396a323069693062666a73302e6a7067

完成每条update操作时间(单位:ms)对比如下表所示:

687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f747a79356c6a3230666530356e77657a2e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777342e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f74776e65756a323067393062676d786e2e6a7067

3.利用sysbench分别并发16,32,64和128个测试线程,执行80000次insert操作,Atlas具体的QPS对比如下表所示:

687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f76623167736a3230666230357761616b2e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777322e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f757a3979686a323069693063386d78772e6a7067

完成每条insert操作时间(单位:ms)对比如下表所示:

687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f76306865766a3230666530356d7439372e6a7067

上表对应的折线图如下所示:

687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f36653537303561356a7731656270346f75723938656a323067363062617133652e6a7067

从Atlas处理三类SQL操作的QPS和完成每条SQL操作的时间对比来看,将event-threads参数设置为CPU个数的2-4倍较为合理。将event-threads参数设置为CPU个数的两倍时,带来的QPS提升较为明显,将其设置为CPU个数的四倍时,QPS也有提升但不是非常明显。对于处理每条SQL操作的时间,通过提高event-threads值是没有显著效果的。

所以我们建议使用者:如果追求Atlas处理SQL请求时的QPS,将event-threads值设置为CPU个数的2-4倍。如果追求Atlas处理SQL请求的完成时间,将event-threads值设置为CPU个数即可。

5.测试结论

本文主要测试了通过Atlas转发SQL请求与直连DB发送SQL请求这两种情形下的性能差距,和event-threads值对Atlas的性能影响。从测试结果来看,Atlas性能表现较为优秀,并没有明显的性能下降。同时在测试中发现Atlas系统属于CPU密集型任务,相对于磁盘IO和内存占用率而言,Atlas对CPU消耗显得最为明显,所以建议在部署Atlas的时候需要优先考虑服务器的CPU性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值