设为首页 收藏本站
查看: 1194|回复: 0

[经验分享] Qihoo360 Atlas MySQL Proxy测试小结

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-7 08:41:54 | 显示全部楼层 |阅读模式
Qihoo360将他们改造后的MySQL Proxy项目开源了,至于为什么起名Atlas就不清楚了,项目地址:https://github.com/Qihoo360/Atlas。我2008年曾测试过官方版本的MySQL Proxy,主要是看中其连接池以及读写分离功能,不过当时的版本效率实在太差,后面就没再关注了。这几天对Qihoo360 Atlas做了下测试,下面是测试结果。
  • 环境准备

服务器端:
测试机
DELL PE R710
CPU
E5620  @ 2.40GHz(4 core, 8 threads) * 2
内存
24G
RAID卡
PERC H700 Integrated, 512MB, BBU, 12.10.1-0001
系统
Red Hat Enterprise Linux Server release 6.4 (Santiago)
内核
2.6.32-358.el6.x86_64 #1 SMP
raid级别
raid 5(10K RPM SAS 300G * 6)
文件系统
xfs
硬盘
10K RPM SAS 300G * 6
Proxy代理层端:
测试机
HP DL360 G5
CPU
E5405 @ 2.00GHz(4 core, 4 threads) * 2
内存
16G
RAID卡
P400i 256MB, BBU, 4.12
系统
Red Hat Enterprise Linux Server release 6.1 (Santiago)
内核
2.6.32-131.0.15.el6.x86_64 #1 SMP
raid级别
raid 0(10K RPM SAS 146G * 2)
文件系统
ext4
硬盘
10K RPM SAS 146G* 2
  • MySQL及Atlas关键配置

[yejr@imysql.com]# cat /etc/my.cnfmax_connections = 2048
max_connect_errors = 100000[yejr@imysql.com]# cat /usr/local/mysql-proxy/conf/13306.cnfevent-threads = 16
min-idle-connections = 768
  • 测试方案

1. 采用tpcc-mysql进行压测,但由于Atlas不支持PREPARE,未遂;
2. 采用sysbench进行压测,但由于Atlas当前版本对长连接支持不佳,出现大量的connection lost告警,测试结果几乎无效,忽略;
3. 采用开发者提供的一个简易C程序,进行并发多线程短连接测试,虽然有部分connection lost告警,但比用sysbench时少多了,结果有效;
开发者提供的C程序,若有需要可向开发者提出,由于未得到授权,我不方便将其放上来供下载。
测试模式:
测试程序并发数:32、64、128、192、256、320、384、448、512、576、640,每线程完成10000次请求,每次请求都是随机的SELECT、INSERT、UPDATE,每次UPDATE都是基于主键条件,INSERT就不用说了,SELECT有4种随机模式:
a) /*master*/SELECT * FROM mysqlslap.t1 WHERE /*waht*/id in (N1, N2, N3)
b) SELECT * FROM mysqlslap.t1 WHERE id = N
c) SELECT * FROM mysqlslap.t1 WHERE id in (N1, N2) limit 1
d) /*master*/SELECT * FROM /*test*/ mysqlslap.t1 WHERE id = %d
也就是SELECT请求会模拟强制读MASTER,或者让Atlas自动分配。
  • 测试脚本

测试脚本很简单:
[yejr@imysql.com]# cat Atlas_benchmark.sh

#!/bin/bash

MYSERVER=10.0.0.1
PORT=13306

export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql

for THREAD in 32 64 128 192 256 320 384 448 512 576 640
do

#记录日志
exec 3>&1 4>&2 1>> check_1m3s_1server_1proxy_${THREAD}_${RANDOM}.log 2>&1

count=1
max=5
#每种并发模式都进行5轮测试,最后取结果平均值
while [ $count -le ${max} ]
do

echo "./check -t short -c ${THREAD} -h ${MYSERVER} -P ${PORT} -u proxy -p proxy -n 10000"
./check -t short -c ${THREAD} -h ${MYSERVER} -P ${PORT}-u proxy -p proxy -n 10000

count=`expr ${count} + 1`

#每次测试完,都会暂停60秒,让数据库歇歇 :)
if [ ${count} -lt ${max} ] ; then
sleep 60
fi

done

done

测试完后对结果进行整理汇总即可。

    测试结果

测试成功次数

360-atlas-proxy-testing-2013091201-300x180.jpg
Atlas Proxy并发测试成功次数 – 20130911
测试成功率
360-atlas-proxy-testing-2013091202-300x180.jpg
Atlas Proxy并发测试成功率 – 20130911
  • 结论及建议

Qihoo360开源的精神值得学习,不过目前来看Atlas还有一定提升空间,不妨等它更加稳定并且能支持更多特性后再上线使用不迟。
但是对那些苦于无法将slave从库资源利用起来的同学们来说,在前端加一层Atlas倒是很不错的选择,毕竟其他可选的产品太少了,只要程序中不用到特殊的SQL一般也不会有大问题,注意提高程序对数据的容错性即可。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-310720-1-1.html 上篇帖子: MySQL DATE_FORMATE函数内置字符集的坑 下篇帖子: mysql主从中异步和半同步的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表