Qihoo360 Atlas MySQL Proxy测试小结

Qihoo360将他们改造后的MySQL Proxy项目开源了,至于为什么起名Atlas就不清楚了,项目地址:https://github.com/Qihoo360/Atlas。我2008年曾测试过官方版本的MySQL Proxy,主要是看中其连接池以及读写分离功能,不过当时的版本效率实在太差,后面就没再关注了。这几天对Qihoo360 Atlas做了下测试,下面是测试结果。

  • 环境准备

服务器端:

测试机DELL PE R710
CPUE5620  @ 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
CPUE5405 @ 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

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

  • 测试结果

测试成功次数

Atlas Proxy并发测试成功次数 - 20130911

Atlas Proxy并发测试成功次数 – 20130911

测试成功率

Atlas Proxy并发测试成功率 - 20130911

Atlas Proxy并发测试成功率 – 20130911

  • 结论及建议

Qihoo360开源的精神值得学习,不过目前来看Atlas还有一定提升空间,不妨等它更加稳定并且能支持更多特性后再上线使用不迟。

但是对那些苦于无法将slave从库资源利用起来的同学们来说,在前端加一层Atlas倒是很不错的选择,毕竟其他可选的产品太少了,只要程序中不用到特殊的SQL一般也不会有大问题,注意提高程序对数据的容错性即可。


--------------------------------------分割线--------------------------------------

知数堂 (http://zhishuedu.com)培训是由资深MySQL专家叶金荣、吴炳锡联合推出的专业优质培训品牌,主要有MySQL DBA实战优化和Python运维开发课程,是业内最有良心、最有品质的培训课程。

本文出自 “老叶茶馆” 博客,请务必保留此出处http://imysql.blog.51cto.com/1540006/1879883

相关推荐
程序员的必经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页